冒泡排序:
void BubbleSort(int *d,int length)
{
bool finish=false;
for(int i=1;i<=length-1&&!finish;i++)
{
finish=true;
for(int j=0;j<length-i;j++)
{
if(d[j]<d[j+1])
{
int x=d[j];
d[j]=d[j+1];
d[j+1]=x;
finish=false;
}
}
}
Print(d,length);
}
快速排序:
int QKPass(int *d,int low,int high)
{
int now=d[low];
while(low<high){
while(low<high && d[high]>=now){high--;}
if(low<high){d[low]=d[high];low++;}
while(low<high && d[low]<now){low++;}
if(low<high){d[high]=d[low];high--;}
}
d[low]=now;
return low;
}
void QKSort(int *d,int low,int high)
{
if(low<high)
{
int ans=QKPass(d,low,high);
QKSort(d,low,ans-1);
QKSort(d,ans+1,high);
}
}
總的測試代碼:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
using namespace std;
int data[10]={0,5,6,9,8,7,5,3,5,1};//test data
void Print(int *d,int length)
{
for(int i=0;i<length;i++)
{
printf("%d ",d[i]);
}
printf("\n\n\n");
}
void BubbleSort(int *d,int length)
{
bool finish=false;
for(int i=1;i<=length-1&&!finish;i++)
{
finish=true;
for(int j=0;j<length-i;j++)
{
if(d[j]<d[j+1])
{
int x=d[j];
d[j]=d[j+1];
d[j+1]=x;
finish=false;
}
}
}
Print(d,length);
}
int QKPass(int *d,int low,int high)
{
int now=d[low];
while(low<high){
while(low<high && d[high]>=now){high--;}
if(low<high){d[low]=d[high];low++;}
while(low<high && d[low]<now){low++;}
if(low<high){d[high]=d[low];high--;}
}
d[low]=now;
return low;
}
void QKSort(int *d,int low,int high)
{
if(low<high)
{
int ans=QKPass(d,low,high);
QKSort(d,low,ans-1);
QKSort(d,ans+1,high);
}
}
int main()
{
QKSort(data,0,9);
Print(data,10);
return 0;
}