直接插入排序
public static int[] insertSort(int[] array) {
for (int i = 1; i < array.length; i++) {
int temp = array[i];
for (int j = i - 1; j >= 0 && temp < array[j]; j--) {//temp之前的值挨个比较,互换
array[j + 1] = array[j];
array[j] = temp;
}
}
return array;
}
- 结果
3421互换一次
3241互换一次
2341互换一次
2314互换一次
2134互换一次
1234互换一次 - 外循环表现出来的就是插入到一个位置
- 内循环就是用当前的temp值跟前面的数字挨个比较,符合条件进行互换。
简单选择排序 :
-
在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一
个数比较为止。public static int[] insertSort(int[] array) {
int i=0;
int position;//最小值的位置
for (;i<array.length;i++){
int temp=array[i];
position=i;
int j=i+1;
for (;j<array.length;j++){
if (array[j]<temp){
temp=array[j];
position=j;
}
}
array[position]=array[i];
array[i]=temp;
}return array;
}
比如 4,3,2,1; // i=0;在i后面找到一个最小值,确定位置和数值,然后跟i位置交换。
1,3,2,4;
1,2,3,4
网友评论