#include<iostream> #include<string> using namespace std;
void bubblesort(int *tdata,int number){//冒泡排序数组大小必须传进来,不然在函数里面获得不了数组大小
int temp; for(int i=1;i<number;i++){ for(int j=number-1;j>=i;j--){ if(tdata[j]<tdata[j-1]){ temp=tdata[j-1]; tdata[j-1]=tdata[j]; tdata[j]=temp; } } } } void changesort(int *data,int number){//交换排序
int temp; for(int i = 0 ; i < number-1;i++){ for(int j=i+1;j<number;j++){ if(data[j]<data[i]){ temp=data[j]; data[j]=data[i]; data[i]=temp; } } } } void selectsort(int *data,int number){//选择排序
int temp; for(int i=0;i<number-1;i++){ int flag=data[i]; int num=i; for(int j=i+1;j<number;j++){ if(data[j]<flag){ flag=data[j]; num=j; } } data[num]=data[i]; data[i]=flag; } } void insertsort(int *data,int number){//插入排序有一个移动元素的操作
int temp; for(int i=1;i<number;i++){ temp=data[i]; int j=i-1; while((temp<=data[j])&&(j>=0)){ data[j+1]=data[j]; j--; } data[j+1]=temp; } } void quicksort(int *data,int start,int end){//快速排序
int i=start; int j=end; int temp; int middle=data[(start+end)/2]; do{ while(data[i]<middle&&i<end) i++; while(data[j]>middle&&j>start) j--; if(i<=j){ temp=data[i]; data[i]=data[j]; data[j]=temp; i++; j--; } }while(i<=j); if(j>start)//当左边还有值的时候,循环左边
quicksort(data,start,j); if(i<end)//当右边还有值的时候,循环右边
quicksort(data,i,end); }
void shellsort(int *data,int len){ int d = len; while(d>1){ d = (d+1)/2; for(int i = 0;i if(data[i+d] int temp = data[i+d]; data[i+d] = data[i]; data[i] = temp; } } } } void printout(int *data,int number){ for(int i = 0 ; i < number;i++) cout<<data[i]<<"\n"; } int main(){ int data[]={1,9,10,8,9,29,20,38,49,10,3,8}; int len=sizeof(data)/sizeof(int); // bubblesort(data,len);
// changesort(data,len);
// selectsort(data,len);
// insertsort(data,len);
quicksort(data,0,len-1); printout(data,len); return 0; }
|