#include <cstdio>
const int n =10;
int selectsort(int num[],int n);
int insertsort(int num[],int n);
int quicksort(int num[],int low,int high);
int bubsort(int num[],int n);
int main(){
//选择排序
int i,data[n]={1};
for (i=0;i<n;i++){
scanf("%d",&data[i]);
}
selectsort(data,n);
printf("输出选择排序的数组:\n");
for (i=0;i<n;i++){
printf("%d\n",data[i]);
}
//插入排序
insertsort(data,n);
printf("输出插入排序的数组:\n");
for (i=0;i<n;i++){
printf("%d\n",data[i]);
}
//快速排序
printf("输出快速排序的数组:\n");
quicksort(data,0,n-1);
for (i=0;i<n;i++){
printf("%d\n",data[i]);
}
//冒泡排序
printf("输出冒泡排序的数组:\n");
bubsort(data,n);
for (i=0;i<n;i++){
printf("%d\n",data[i]);
}
return 0;
}
int selectsort(int num[],int n){
for(int i=0;i<=n;i++){
int k=i;
for(int j=i;j<=n;j++){
if(num[j]<num[k]){
k=j;
}
}
int temp = num[i];
num[i] =num[k];
num[k] =temp;
}
return 0;
}
int insertsort(int num[],int n){
int i,j;
for (i=0;i<n;i++){
for(j=i+1;j>=0;j--){
int temp;
if(num[j]<num[j-1]){
temp = num[j-1];
num[j-1] =num[j];
num[j] =temp;
}
}
}
return 0;
}
int quicksort(int num[],int low,int high){
int i=low,j=high;
int temp =num[low];
if(i<j){
while(i!=j){
while(i!=j&&temp<num[j])
j--;
num[i] =num[j];
while(i!=j&&num[i]<temp)
i++;
num[j] =num[i];
}
num[i]=temp;
quicksort(num,low,i-1);
quicksort(num,i+1,high);
}
return 0;
}
int bubsort(int num[],int n){
int i,j;
for(i=0;i<n;i++){
for(j=n-1;j>i;j--){
if(num[j-1]>num[j]){
int temp = num[j-1];
num[j-1]=num[j];
num[j] =temp;
}
}
}
return 0;
}
因为这几种排序较为简单,就不做详细的解释,仅仅贴出代码。至于其他的排序可以参考一下大佬的文章:
程序员必知的8大排序(①直接插入排序②希尔排序③简单选择排序④堆排序⑤冒泡排序⑥快速排序⑦归并排序⑧基数排序)
http://blog.csdn.net/Summer_YuXia/article/details/53240848