冒泡排序:
数组:int[] arr = {24,69,80,57,13};
自己写代码实现:最后打印的结果是: 13,24,57,69,80
原理:相邻元素两两比较,大的往后走,第一次循环结束后,最大值就在最后(最大索引处)。
原值:24,69,80,57,13
第一:24,69,57,13,80 比较了:4次
第二:24,57,13,69,80 比较了:3次
第三:24,13,57,69,80 比较了:2次
第四:13,24,57,69,80 比较了:1
方法名:bubbleSort
for(int i = 0; i<arr.length-1 ; i++ ){ //总共要比较的次数
//内循环控制每次比较需要比较的次数
for(int j=0; j<arr.length-1-i; j++){ // -1是为了防止索引越界,-i是提高效率
//相邻元素两两比较,大的往后走
if(arr[j] > arr[j+1]){ //arr[j]=80 arr[j+1]=57
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
选择排序:
数组:int[] arr = {24,69,80,57,13};
自己写代码实现:最后打印的结果是: 13,24,57,69,80
原理:从最小索引处开始,那一个索引上的元素,依次与其他索引位置的元素比较,小的在前,大的在后。
二分(折半)查找:
前提条件:数组必须是有序的。
无序数组可以使用二分查找吗? 不可以,原因是因为二分查找的前提条件是数组必须是有序的,即使你对无序数组进行排序,那么也很有可能,元素的位置发生改变。
8 9 12 10 5 排序后:5 8 9 10 12 60
Arrays:数组工具类
public static String toString(int[] arr);
public static void sort(int[] arr);
public static int binarySearch(int[] arr,int key); 如果没找到,返回:-插入点-1 |
|