Java基本排序方法
一、冒泡排序法
基本概念:
依次比较相邻的两个数,将小数放在前面,大数放在后面。
案例:
public static void main(String[] args) {
//定义一个数组
int[] arr = {1,1,1,3,4,6,2};
for (int j = 0 , count = arr.length-1; j < count;j++) {
for (int i = 0 , len = count - j; i < len; i++) {
//如果当前数值的比后面的数值大时,就交换位置
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
}
二、选择排序法
基本概念:
每循环一次排序时,从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。
案例:
public static void main(String[] args) {
//定义一个数组
int[] arr = {1,4,2,3,8,1,9};
for (int j = 0 ; j < arr.length - 1;j++) {
//假设最值的索引
int indexOfNum = 0;
for (int i = 0; i < arr.length; i++) {
//当arr[i]大于arr[indexofNum]时,把arr[indexofNum]的索引记下
if(arr[i] > arr[indexOfNum]){
indexOfNum = i;
}
}
//需要移动到的所有
int index = arr.length - 1 - j;
//交换两个数值的位值位置
int temp = arr[indexOfNum];
arr[indexOfNum] = arr[index];
arr[index] = temp;
}
}
三、二分查找
基本概念:
将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后。
将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。
然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分。
案例:
public static void main(String[] args) {
//定义一个数组
int[] arr = {1 , 2,2 ,3,4,5,9};
int value = 2;
//获得 数组中的中间值
int minIndex = 0;
int maxIndex = arr.length-1;
while (true) {
//获得中间的索引
int midIndex = (minIndex + maxIndex) / 2;
if(arr[midIndex] == value){
System.out.println( value +"存在 ,在" + midIndex );
break;
}else if(arr[midIndex] > value){
maxIndex = midIndex-1;
}else{
minIndex = midIndex + 1;
}
}
}
说明:
1)选择排序法比冒泡排序法要少。
2)二次查找所查询的数组必须是有序的。