冒泡排序:
相邻元素两两比较,大的往后放。第一次排序完毕后,最大值就出现在最大索引出。此方法排序需要比较数组长度-1次
int[] arr = { 24, 65, 87, 57, 12,}; for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-1-i; j++) { if(arr[j]>arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }
选择排序:
从0索引开始,一次和后面元素比较,小的往前放,第一次比较完毕后,最小值出现在最小索引处。
int[] arr = { 24, 65, 87, 57, 12,}; for (int i = 0; i < arr.length-1; i++) { for (int j = i+1; j < arr.length; j++) { if(arr[i]>arr[j]){ int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } }
二分查找(折半查找):
前提:数组必须是有序的。
思想:每次都计算中间的那个元素,比较元素与中间数的大小,就能减少一半的元素。
public static int getIndex(int[] arr,int value){ int max = arr.length-1; int min = 0; int mid = (max+min)/2; while (arr[mid]!=value) { if (arr[mid]>value) { max = mid-1; }else if (arr[mid]<value) { min = mid+1; } if(min>max){ return -1; } mid = (max+min)/2; } return mid; }
时间: 2024-12-12 17:53:45