几种简单排序的实现

来源:互联网 发布:南极人枕芯怎么样 知乎 编辑:程序博客网 时间:2024/05/21 21:01
#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;}

0 0
原创粉丝点击