#include <stdio.h> void QuickSort(int arr[],int low,int high); int main(int argc, char *argv[]) { int i,arr[10]={5,8,4,3,7,0,9,1,2,6}; for(i=0;i<10;i++) printf("%d ",arr[i]); QuickSort(arr,0,9); printf("\n"); for(i=0;i<10;i++) printf("%d ",arr[i]); return 0; } void QuickSort(int arr[],int low,int high) { int i=1,j=1,key=1; if(low < high) { key = arr[low];i=low;j=high; while(i < j) { while(i<j && arr[j]>key) j--; if(i<j) arr[i++] = arr[j]; while(i < j && arr[i]<key) i++; if(i < j) arr[j--] = arr[i]; } arr[i] = key;//此时i==j QuickSort(arr,low,i-1); QuickSort(arr,i+1,high); } }
#include <stdio.h> void InsertSort(int arr[],int i,int j); int main(int argc, char *argv[]) { int i,arr[10]={4,5,8,9,6,0,1,7,3,2}; for(i=0;i<sizeof(arr)/sizeof(int);i++) printf("%d ",arr[i]); InsertSort(arr,2,7); printf("\n"); for(i=0;i<sizeof(arr)/sizeof(int);i++) printf("%d ",arr[i]); return 0; } void InsertSort(int arr[],int i,int j)//待排序的数组名arr待排的下界i和上届j。 { int k,temp,b=i;//k用来做扦插过程中的循环变量从而保护变量i,b用来存储待排序的下界。 for(i=i+1;i<=j;i++) { k=i; while(k>b && arr[k]<arr[k-1]) { temp=arr[k]; arr[k] = arr[k-1]; arr[k-1]=temp; k--; } } }