冒泡排序
- 相邻两个元素比较,每次排序获得一个当前排序区间的最大值
// 冒泡排序
// 外层循环每次最后一个元素已经是最大的了,所以每次循环都减少一个元素
for (int i = arr.length - 1; i >=0; i--) {// 内层循环每次都是从第一个元素开始,如果前面的元素比后面的元素大,就交换位置for (int j = 0; j < i; j++) {if (arr[j] > arr[j+1]) {tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}
}System.out.println("排序后的数组:"+ Arrays.toString(arr));
选择排序
选择排序是选定一个位置,然后这个位置和所有元素比较
//选择排序
for (int i = 0; i < arr.length; i++) {// 假设当前元素是最小的int minIndex = i;// 从当前元素的下一个元素开始,找到比当前元素小的元素的下标for (int j = i+1; j < arr.length; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}// 如果找到了比当前元素小的元素,就交换位置if (minIndex != i) {tmp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = tmp;}
}
System.out.println("排序后的数组:"+ Arrays.toString(arr));
區別
- 冒泡排序是相邻两个元素比较
- 选择排序是选死一个位置,拿着这个元素和所有的元素比较