标签:ges 分享图片 cpp tom 插入 代码 src 实现 type
(1)算法描述对于给定的线性空间,依次考察每个元素,当指定的元素比后一个元素大(或者小)的时候就交换位置,然后交换过来的后一个元素继续向前比较,只要比该元素大(或者小)就两两交换,直到不符合交换条件或者到达最前端。
CustomSort.h
void insertionSort(int arr[], int number);
CustomSort.cpp
void insertionSort(int arr[], int number) {
// 一次考察每个元素
for (int i = 1; i < number; i++) {
// 从考察的当前元素开始,向后查找当前元素该放到哪里
for (int j = i; j > 0; j--) {
// 如果当前元素比前一个元素小就交换
if (arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
} else {
// 如果如果没有比这个元素大的就提前终止
break;
}
}
}
}
public class InsertionSort {
public static int[] sort(int[] arr, int number) {
for (int i = 1; i < number; i++) {
for (int j = i; j > 0; j--) {
if (arr[j] < arr[j-1]) {
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
} else {
break;
}
}
}
return arr;
}
}
虽然插入排序会在数据满足约定的情况下提前终止排序,但是最坏的情况下还是O(n^2)。由于数据的频繁交换,会使得同等数据情况下插入排序慢与选择排序。
标签:ges 分享图片 cpp tom 插入 代码 src 实现 type
原文地址:http://blog.51cto.com/xvjunjie/2328116