稀尔排序:
//希尔排序
#include <iostream>
#include <stdio.h>
void ShellSort( int* data, int left, int right){
int len = right-left +1;
int d =len;
while (d>1){
d =(d+1)/2;
for(int i =left; i<right+1-d;i++){
if(data[i+d]<data[i]){
int tmp = data[i+d];
data[i+d] = data[i];
data[i] =tmp;
}
}
}
}
void ShellSort2( int *data, int len){
int d =len;
while (d>1){
d =(d+1)/2;
for(int i =0; i<len-d;i++){
if(data[i+d]<data[i]){
int tmp = data[i+d];
data[i+d] = data[i];
data[i] =tmp;
}
}
for( int i=0; i<10;i++)
printf("%5d", data[i]);
printf("\n");
}
}
int main( )
{
int list[10];
int n=9;
int m=0;
printf(" Input 10 number: ");
for(int i=1; i<10;i++)
scanf("%d",&list[i]);
printf("\n");
ShellSort2(list,10);
//ShellSort(list,0,9);
printf("\n");
for(int i=0; i<10;i++)
printf("%5d",list[i]);
printf("\n");
}
冒泡排序:
//冒泡排序
#include <iostream>
#include <stdio.h>
void BubbleSort( int *list)
{
int temp;
for(int i=0;i<9;i++)
for(int j=0; j<9-i; j++){
if(list[j]>list[j+1])
{
temp =list[j];
list[j] =list[j+1];
list[j+1] =temp;
}
}
}
int main( )
{
int list [10];
int n=9,m=0;
printf(" Input 10 number: ");
for( int i=0 ; i<10;i++)
scanf("%d",&list[i]);
printf("\n");
BubbleSort(list);
for(int i =0;i<10;i++)
printf("%5d",list[i]);
printf("\n");
}
快速排序算法:
//快速排序算法
#include <iostream>
#include <stdio.h>
void improveqsort (int *list, int m, int n)
{
int k,t,i,j;
/*
for(int i =1; i<10;i++)
printf("%3d",list[i]);
*/
if(m<n)
{
i =m;
j=n+1;
k=list[m];
while(i<j)
{
for(i =i+1;i<n;i++)
if(list[i]>=k)
break;
for(j=j-1;j>m;j--)
if(list[j]<=k)
break;
if(i<j)
{
t =list[i];
list[i]=list[j];
list[j] =t;
}
}
t =list[m];
list[m]=list[j];
list[j]=t;
improveqsort(list,m,j-1);
improveqsort(list,i,n);
}
}
int main()
{
int list[10];
int n=9;
int m=0;
int i;
printf(" Input 10 number: ");
for( i=0;i<10;i++)
scanf("%d",&list[i]);
printf("\n");
improveqsort(list,m,n);
for(i=0;i<10;i++)
printf("%5d",list[i]);
printf("\n");
}
关于程序算法艺术与实践更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.