Java数组的一些基本算法

数组的一些算法问题:
 排序:(升序)
  选择排序:
    求每一轮的最小值;再输出
  冒泡排序:
    相邻的两个数相比较,把两个数相比较,第一个大于好面的就交换位置
  shell排序:
  插入排序:
 查找:
  二分法查找:
  
 class ErFenFa
 {
  public static void main(String[] args)
  {
   int []arr={2,4,6,3,1,8,7,9};
   System.out.println(binarySearch(arr,4));
  }

static int binarySearch(int []arr,int key)
  {
   int low=0;
   int high=arr.length-1;
   while(high>=low)
   {
    int mid=(low+high)/2;//中间索引
    int midval=arr[mid];
    if(key>midval)
    {
     low=mid+1;
    }
    else if(key<midval)
    {
     high=mid-1;
    }
    else
    {
     return mid;
    }
   }
   return -1;
  }
 }
 
 求最值:
  
 java.util.Arrays;
  public static void sort(int []arr)
  
  
 数组的拷贝:
 System类:
 
 import java.util.Arrays;

public class SuzhuDemo
 {
  public static void main(String[] args)
  {
   String []arr1={"A","B","C","D"};
   String []arr2=new String[5];
   System.out.println(Arrays.toString(arr2));
   System.arraycopy(arr1,1,arr2,0,3);
   System.out.println(Arrays.toString(arr2));

/*
    arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
     从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
     参数:
    src - 源数组。
    srcPos - 源数组中的起始位置。
    dest - 目标数组。
    destPos - 目标数据中的起始位置。
    length - 要复制的数组元素的数量。  
   */
  }
 }
 
 
 Java5新特性:
 
 可变参数:
 增强for循环:
 
 class VarArgsDemo
 {
  public static void main(String[] args)
  {
   int []arr={1,2,3,4,5,6,7,8};
   int ret=getSum(arr);
   System.out.println(ret);
   
   //foreach循环
   for(int temp:arr)
   {
    System.out.println(temp);
   }
  }

/*
  可变参数static int getSum(int ...arr)
  */
  static int getSum(int []arr)
  {
   int sum=0;
   for(int i=0;i<arr.length;i++)
   {
    sum+=arr[i];
   }
   return sum;
  }

/*
  ---------- 编译Java ----------
  VarArgsDemo.java:23: 错误: 无法在VarArgsDemo中同时声明getSum(int...)和getSum(int[])
   static int getSum(int...arr)
        ^
  1 个错误

Output completed (0 sec consumed) - Normal Termination
  static int getSum(int...arr)
  {
   return 0;
  }
  */
 }
 
 面向过程:执行者
 面向对象:指挥者
 
 三大特征:封装,继承,多态
 
 类和对象之间的关系:
 
 什么是对象:可以把任何东西看成对象
 
  对象:
  状态:
  功能、行为
 描述对象:通过类来描述对象;

Java数组的一些基本算法

时间: 2024-11-13 06:42:23

Java数组的一些基本算法的相关文章

java(数组及常用简单算法 )

数组 数组:数组是存储同一种数据类型数据的集合容器. 数组的定义格式: 数据类型[]  变量名  =  new  数据类型[长度]; 数组的好处:对分配到数组对象中每一个数据都分配一个编号(索引值.角标.下标),索引值的范围是从0开始,最大是:长度-1. 局部变量:如果一个变量是在一个方法(函数)的内部声明的,那么该变量就是一个局部变量. 成员变量:成员变量就是定义在方法之外,类之内的. 数组中最常见的问题: 1.NullPointerException 空指针异常原因:引用类型变量没有指向任何

[转载]Java数组扩容算法及Java对它的应用

原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arrays.copyOf()可以简便的创建数组副本. 5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容.  源码展示: 1 public class Array

java 数组比较,元素的比较,Comparable,Comparator比较的应用实现,排序,查找示例

java 数组比较,元素的比较,自定义Comparator的实现,排序,查找示例 package org.rui.array.compar; import java.util.Arrays; import java.util.Random; import org.rui.generics.anonymity.Generator; /** * 程序设计的基本目标是"将保持不变的事物与会发生改变的事物相分离" * 而这是,不变的是通用的排序算法,变化的是各种对象相互比较的方式, * 因此,

Java数组练习题小结

//2015/07/07 //Java数组小小练习题 /* 3. 写一个函数,计算一个整数数组的平均值 4. 自定义一个整数数组a,读入一个整数n,如果n 在数组中存在,则输出n 的下标:如果不存在,则输出-1. 5. 给定一个数组,输出数组中的最大值和最小值 6. *给定一个数组,把这个数组中所有元素顺序进行颠倒. 7. *完成数组的冒泡排序算法:给定一个数组:int[] a = {1,3,2,7,5},利用冒泡排序对其按照从小到大的顺序排序,然后输出结果. 8. *使用第二种算法对数组进行排

Java 数组基础,java.util.Arrays

定义数组 方式1(推荐,更能表明数组类型) 方式2(同C语言) 方式3?定义时直接初始化 数组运用基础 数组长度 equals() 数组元素不为基本数据类型时 二维数组 二维数组基础 变长的二维数组 java.utils.Arrays 类 参考文献: ? 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int[10]; 数组名,也即引用a,指向数组元素的首地

java实现的集中排序算法

嗯,在经典的排序算法里面,有:冒泡排序,选择排序,插入排序,希尔排序,二叉归并排序,快速排序,堆排序 下面给出java的实现方式,不过快速排序没有搞定,研究中 package net.itaem.sort; /** * 数组排序 * */ public class ArraySorted { /** * 冒泡排序(而且是简单的冒泡排序,应该属于交换排序,不属于经典的冒泡排序) * */ public static void bubble(int[] source){ if(source.leng

Java中常用的查找算法——顺序查找和二分查找

Java中常用的查找算法——顺序查找和二分查找 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位. b) 图例说明: 原始数据:int[] a={4,6,2,8,1,9,0,3}; 要查找数字:8 代码演示: import java.util.Scanner; /* * 顺序查找 */ public class SequelSearch { public static void main(String[] arg

Java数据结构 遍历 排序 查找 算法实现

1. 遍历算法(遍历二叉树6种方法) 1.1. 概述 遍历算法针对二叉树而言的,主要有先序.中序.后序三种遍历顺序,三种顺序又分别有递归和常规算法,二叉树遍历的主要思想是:遍历左子树,遍历右子树,访问根节点,由这三者的遍历顺序来确定是先序.中序还是后序.下面只要求掌握递归遍历算法,常规遍历算法见附录一. 1.2. 先序遍历算法 遍历顺序:访问根节点,遍历左子树,遍历右子树.代码如下: void preOrder(BinaryTreeNode bt) { if (bt == null)// 如果当

Java中的二分法查找算法

[ 什么是二分查找 ]  二分查找又称为折半查找,该算法的思想是将数列按序排列,采用跳跃式方法进行查找,即先以有序数列的中点位置为比较对象, 如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分.以此类推不断缩小搜索范围. [ 二分查找的条件 ] 二分查找的先决条件是查找的数列必须是有序的. [ 二分查找的优缺点 ] 优点:比较次数少,查找速度快,平均性能好: 缺点:要求待查数列为有序,且插入删除困难: 适用场景:不经常变动而查找频繁的有序列表. [ 算法步骤描述 ] ①