目录
一、冒泡排序
原理
相邻两个元素两两比较,大的往后放。第一次完毕后,最大值就出现在最大索引处。同理,继续,即可得到一个排好序的数组。
规则
- 两两比较,大的往后放
- 每一次比较完毕后,下一次的比较就会减少一个元素的比较
- 第一次比较,0个元素不比
第二次比较,1个元素不比
第三次比较,2个元素不比
… …
4.总共需要比较数组长度-1次
代码
for (int i = 0; i < arr.length - 1; i++) {//保证总共需要比较数组长度-1次
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索引开始,依次和后面的元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处。其他的同理即可得到一个排好序的数组。
规则
- 第一次从0索引开始和其他进行比较
第二次从1索引开始和其他进行比较
… …
2. 最后一次,是索引为数组长度-2的元素和数组长度-1的元素比较
代码
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[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}