选择排序,顾名思义,就是选出一个数,找好位置放入。有点类似于扑克牌。顺便说一句,我在学习所有这些排序时,专门买了一副扑克牌演示代码过程,效果还不错,建议使用。
1.数字示例
7654321
6754321
5674321
4567321
3456721
2345671
1234567
2.动态效果图
3.代码
public class InsertionSort {
public int[] sort(int[] sourceArray) {
int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
//i从1开始是因为把索引为0的元素看成是已排序好的元素
for (int i = 1; i < arr.length; i++) {
//记录待排序元素
int temp = arr[i];
//记录待排序元素下标
int j = i;
//注意此处是temp而不是arr[j],因为就是要让temp和前面的元素进行比较
while (j > 0 && temp < arr[j - 1]) {
arr[j] = arr[j - 1];
j--;
}
// j!=i就说明进入过while循环
if (j != i) {
arr[j] = temp;
}
}
return arr;
}
public static void main(String[] args) {
InsertionSort in = new InsertionSort();
int[] sourceArray = {7,6,5,4,3,2,1};
int[] arr = in.sort(sourceArray);
System.out.println(Arrays.toString(arr));
}
}