void swap(int &ival1, int &ival2){
int temp;
temp = ival1;
ival1 = ival2;
ival2 = temp;
}
//选择排序算法:
void selectSort(int a[],int arraysize)
{
for(int i=0;i!=arraysize;i++){
int min=i;
for(int j=i+1;j!=arraysize;j++){
if(a[j]<a[min])
min=j;
}
swap(a[i],a[min]);
}
}
//插入排序算法:
void insertSort(int a[],int arraysize)
{
for(int i=1;i<arraysize;i++){
int key=a[i];//引入key必不可少,因为a[i]在后面会被覆盖掉
int j=i-1;
while(j>=0&&(a[j]>key)){ //这里不要用for循环,用的话j会是一个局部变量, 后面执行a[j+1]=key;会出错
a[j+1]=a[j];
j--;
}
a[j+1]=key;
}
}
//冒泡排序算法:
void bubbleSort(int a[],int arraysize)
{
for(int i=arraysize-1;i>=0;i--){
for(int j=0;j<i;j++){
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}
}
}
//快速排序算法
void quickSort(int a[], int first, int last)
{
int lower = first + 1, upper = last;
int bound = a[first];
while(lower <= upper){
while(a[lower] < bound)
lower++;
while(bound < a[upper])
upper--;
if(lower < upper)
swap(a[lower++],a[upper--]);
else
lower++;
}
swap(a[upper],a[first]);
if(first < upper-1)
quickSort(a, first, upper-1);
if(upper+1 < last)
quickSort(a, upper+1,last);
}
int main()
{
int a[8]={47,29,71,99,78,19,24,47};
cout<<"排序前:"<<endl;
for(int i=0;i<8;++i){
cout<<a[i]<<" ";
}
cout<<endl;
quickSort(a,0,7);
//selectSort(a,8);
//insertSort(a,8);
//bubbleSort(a,8);
cout<<"排序后:"<<endl;
for(int i=0;i<8;++i){
cout<<a[i]<<" ";
}
cout<<endl;
}
C++ 选择排序,插入排序,冒泡排序,快速排序
最新推荐文章于 2024-11-17 15:19:52 发布