1.冒泡排序
(1)冒泡排序的思想
两两比较,大的往后放,第一次比较完毕之后,最大值就出现在了最大索引处!然后依次这样比较,就可以得到一个排好序的数组.
(2)冒泡排序的规律
1)一定是两两比较,大的往后放,第一次比较完毕,最大值在最大索引处
2)第一次全部都比较,确定数组的最大值
第一次比较,有0个元素不比
第二次比较,有1个元素不比
第三次比较,有2个元素不比
......
元素比较的次数:(数组长度-1)次
(3)冒泡排序算法
public static void BubbleSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for (int y = 0; y < arr.length - 1 - x; y++) { if (arr[y] > arr[y + 1]) { int temp = arr[y]; arr[y] = arr[y + 1]; arr[y + 1] = temp; } } } }
2.选择排序
(1)选择排序的思想
从0索引对应的元素依次和后面索引对应的元素进行比较,小的往前放,第一次比较完毕之后,最小值就出现在最小索引处,然后依次这样比较,就可以得到一个排好序的数组.
(2)选择排序的规律
1)从0索引开始依次和后面索引对应的元素进行比较,小的数据往前放,最小值在最小索引处.
2)用0索引对应的值依次和后面索引对应的值比较
用1索引对应的值依次和后面索引对应的值比较
......
arr.length-2
索引对应的元素和arr.length-1索引对应的值比较
(3)选择排序算法
// 选择排序的功能 public static void selectSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for (int y = x + 1; y < arr.length; y++) { if (arr[x] > arr[y]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } }
3.折半查找
(1)
前提:一定是数组中的元素有序的!
(2)折半查找的中心思想:
直接将数组元素减半,方便开发者使用,计算出中心索引,大了左边找,小了右边找.
(3)
核心思想:
A:定义最小索引和最大索引
B:计算中间索引
C:中间索引对应的元素和需要查找的元素比较
相等,直接返回中间索引
不相等:
大了,左边找 max = mid -1 ;
小了,右边找 min = mid + 1 ;
D:重新计算中间索引 ,回到B继续查找
B:计算中间索引
C:中间索引对应的元素和需要查找的元素比较
相等,直接返回中间索引
不相等:
大了,左边找 max = mid -1 ;
小了,右边找 min = mid + 1 ;
D:重新计算中间索引 ,回到B继续查找
(4)折半查找算法
public static int search(int[] arr,int value) { //1)定义数组中的最小索引和最大索引 int min = 0 ; int max = arr.length -1 ; //2) 计算出中间索引 int mid = (max+min)/2 ; //3)拿中间索引对应的元素和需要查找的元素进行比较 //如果相等,返回 while(arr[mid]!=value) { //不相等 if(arr[mid] >value) { max = mid -1 ; }else { min = mid + 1 ; } //如果这value在数组中找不到,找不到返回-1 if(min>max) { return -1 ; } //重新计算出中间索引 mid = (max+min)/2 ; } return mid ; }