排序算法---直接插入排序(3)
程序员文章站
2022-05-26 22:26:03
...
直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。
package com.zust.edu.sort;
import org.junit.Test;
public class DirectInsertionSort {
public static void swap(int []arr,int a,int b){
arr[a] = arr[a]+arr[b];
arr[b] = arr[a]-arr[b];
arr[a] = arr[a]-arr[b];
}
/**
* 插入排序
*
* @param arr
*/
@Test
public void insertionSort() {
int[] arr = {5,4,1,2,3};
for (int i = 1; i < arr.length; i++) {
int j = i;
while (j > 0 && arr[j] < arr[j - 1]) {
swap(arr,j,j-1);
j--;
}
}
//输出结果
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i]);
}
}
}
简单插入排序在最好情况下,需要比较n-1次,无需交换元素,时间复杂度为O(n);在最坏情况下,时间复杂度依然为O(n2)。但是在数组元素随机排列的情况下,插入排序还是要优于上面两种排序的。