#include<iostream>
#include <cstring>
#include <algorithm>
using namespace std;
void print(int a[]){
for_each(a, a+10, [&](int a){
cout<<a<<" ";
});
cout<<endl;
}
void maopao(){//冒泡排序
int a[10]={5, 7, 1, 3, 4, 6, 8, 9, 2,0};
cout<<"冒泡排序:\n排序前:";
print(a);
for (int i=0; i<9; ++i) {
for (int j = i+1; j<10; j++) {
if(a[i]>a[j])
swap(a[i], a[j]);
}
}
cout<<"排序后:";
print(a);
}
void xuanze(){//选择排序
int a[10]={5, 7, 1, 3, 4, 6, 8, 9, 2,0};
cout<<"选择排序:\n排序前:";
print(a);
for (int i=0; i<9; ++i) {
int k = i;
for (int j = i+1; j<10; j++) {
if(a[k]<a[j])
k = j;
}
if(k!=i)
swap(a[k], a[i]);
}
cout<<"排序后:";
print(a);
}
void charu(){//插入排序
int a[10]={5, 7, 1, 3, 4, 6, 8, 9, 2,0};
cout<<"插入排序:\n排序前:";
print(a);
int first = 0,last = 10;
for (int i=first; i<last; ++i) {
int temp = a[i];
int j = i-1;
while (j>=0&&a[j]<temp) {
a[j+1] = a[j];
j--;
}
if(j!=i-1)
a[j+1] = temp;
}
cout<<"排序后:";
print(a);
}
void Qsort(int a[],int low,int high){
if(low>=high)
return;
int first = low;
int last = high;
int key = a[first];
while (first<last) {
while (first<last&&a[last]<=key) {
last--;
}
a[first] = a[last];
while (first<last&&a[first]>=key) {
first++;
}
a[last] = a[first];
}
a[first] = key;
Qsort(a, low, first-1);
Qsort(a, first+1, high);
}
int main(){
int a[10]={5, 7, 1, 3, 4, 6, 8, 9, 2,0};
Qsort(a, 0, 9);
print(a);
return 0;
}
几种简单排序的实现
最新推荐文章于 2022-07-28 17:17:48 发布