直接插入排序
void insert_sort(int a[],int n/*元素个数*/){
int temp;
for(int i =1;i < n; ++i){
temp = a[i];
for(j = i-1;j>=0 && temp < a[j];j--){ //查找插入的位置
a[j+1] = a[j];
}
a[j+1] =temp;
}
}
编程实现希尔排序
初始时取序列的一般为增量,以后每次减半,直到增量为1;
void shell_sort(int a[], int len){
for(int h=len/2; h>0;h=h/2){
for(int i =h; i<len;++i){
temp = a[i];
for(int j = i-h;(j>=0 && temp<a[j]); j -=h){
a[j+h] = a[j];
}
a[j+h] = temp;
}
}
}
编程实现冒泡排序
void bubble_sort(int a[],int len){
for(int i=0;i<len-1;++i){
exchange = 0;
for(int j =len -1;j >= i; j--){
if(a[j+1] < a[j]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
exchange =1;
}
}
if(exchange == 0)
return ; //此趟排序数据没有发生改变。
}
}
}
编程实现快速排序
void quick_sort(int a[],int low,int high){
int pivot;
if(low < high){
pivot = a[low];
int i =low;
int j = high;
while(i < j){
while(i < j && a[j] >= pivot)
j--;
if(i < j)
a[i++] = a[j];
while(i < j && a[i] <= pivot)
i++;
if(i<j)
a[j--] = a[i];
}
a[i] = pivot; // 此时i = j
quick_sort(a,low,i-1);
quick_sort(a,i+1,high);
}
}