插入排序
步骤:
- 左边已经局部有序,设其边界为in,那么插入点为out=int+1
- 将插入点缓存在临时变量temp中
- 将局部有序的元素从右向左和temp比较,如果不符合排序规则,那么即在局部有序的元素中找到了temp,使得局部有序的元素中加入temp,依然可以保持局部有序。如果符合排序规则,那么将局部有序序列向右移动。
- int+1,重复上述步骤 代码实现如下:
public static void Insert_sort(int arr[]){
int in,out;
for(out = 1;out < arr.length;out++){
int temp = arr[out];
in = out - 1;
while(in >= 0 && arr[in] > temp){
arr[in+1] = arr[in];
in--;
}
arr[in+1] = temp;
}
}
一般来说,插入算法比冒泡排序快很多,比选择排序略快。
对于基本有序的序列来说,插入排序的时间复杂度接近O(N)。