#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 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;
}
|