插入排序
void insertion_sort(int arr[], int len){
int i,j,key;
for (i=1;i
key = arr[i];
j=i-1;
while((j>=0) && (arr[j]>key)) {
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
}
}
希尔排序
void shell_sort(int arr[], int len) {
int gap, i, j;
int key;
for (gap = len >> 1; gap > 0; gap >>= 1)
for (i = gap; i < len; i++) {
key = arr[i];
j=i-gap;
while((j>=0) && (arr[j]>key)){
arr[j+gap] = arr[j];
j -= gap;
}
arr[j+gap] = key;
}
}
归并排序
void mergeSort(int arr[], int start, int end){
if(start
int mid = (start + end)/2;
mergeSort(arr, start, mid);
mergeSort(arr, mid+1, end);
merge(arr, start, mid, end);
}
}
void merge(int arr[], int start, int mid, int end){
int temp[end-start+5];
int p1=start, p2=mid+1, p=start;
while(p1<=mid && p2<=end)
temp[p++] = arr[p1] < arr[p2]? arr[p1++]: arr[p2++];
while(p1<=mid)
temp[p++] = arr[p1++];
while(p2<=end)
temp[p++] = arr[p2++];
for(p=start;p<=end;p++)
arr[p] = temp[p];
}