插入排序
需求:对数组进行升序或降序排列
方法:将数组分为两组数据,分别为有序组和无序组,每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,将该元素插到有序组当中。就这样,每次插入一个元素,有序组增加,待插入组减少。直到待插入组元素个数为0。我们一般将数据第一个元素视为有序组,其他均为待插入组。
代码实现:
public class InsertionSortTest {
public static void main(String[] args) {
int[] arr = new int[] {10,3,5,2,4,6,8,9,7,1};
System.out.println("===========开始排序(升序排列)==========");
long startTime = System.nanoTime();
int temp,j;
for (int i=1;i<arr.length;i++) {
temp = arr[i];
j = i;
while (j>0 && temp < arr[j-1]) {
arr[j] = arr[j-1];
j--;
}
arr[j] = temp;
}
System.out.println("===========排序结束,花费时间:"+String.valueOf(System.nanoTime()-startTime)+"ns==========");
System.out.print("排序后的结果为:");
for (int num : arr) {
System.out.print(num+",");
}
}
}