[C++]几种排序

本文为大大维原创,最早于博客园发表,转载请注明出处!!!

 

1.冒泡:

#include<cmath>
#include<cstdlib>
#include<ctime>
#include<iostream>
using namespace std;
int main()
{
    int n;
    cout<<"INPUT NUM"<<endl;
    cin>>n;
    const int cn=n;
    int num[cn],
        srand(static_cast<unsigned>(time(NULL)));
    for(auto &s:num)
    {
        s=rand()%100;
    }
    for(auto s:num)
        cout<<s<<" ";
    cout<<endl;
    for(int i=0; i<cn; i++)
    {
        for(int j=0; j<cn-i; j++)
        {
            if(num[j]>num[j+1])
            {
                int temp=num[j];
                num[j]=num[j+1];
                num[j+1]=temp;
            }
        }
    }
    for(auto s:num)
        cout<<s<<" ";
    cout<<endl;
    return 0;
}

2.快速

 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<ctime>
 4 using namespace std;
 5 /*
 6 @快序排列算法的实现
 7 */
 8 int partition(int data[],int m,int p)///返回p,使得data[p]是第p小的值
 9 {
10     int i=m,j=data[i];///j是划分元素
11     bool flag=true;
12     while(flag)
13     {
14         do
15             i++;
16         while(data[i]<j);
17         do
18             p--;
19         while(data[p]>j);
20         if(i<p)
21         {
22             int temp;
23             temp=data[i];
24             data[i]=data[p];
25             data[p]=temp;
26         }
27         else
28             flag=false;
29     }
30     data[m]=data[p];
31     data[p]=j;
32     return p;
33 }
34 void quicksort(int data[],int low,int high)
35 {
36     if(low<high)
37     {
38         int temp=high+1;
39         temp=partition(data,low,temp);
40         quicksort(data,low,temp-1);
41         quicksort(data,temp+1,high);
42     }
43 }
44 int main()
45 {
46 /*
47 @产生一个规模为CNT的,范围为[RANDMIN,RANDMAX)的随机数组,并显示
48 */
49     int cnt,randmin,randmax;
50     cout<<"Please Input 'CNT' 'RANDMIN' 'RANDMAX'"<<endl;
51     cin>>cnt>>randmin>>randmax;
52     const int CNT=cnt,
53               RANDMIN=randmin,
54               RANDMAX=randmax;
55     int Data[CNT];
56     srand((unsigned)time(NULL));
57     for(int i=0; i<CNT; i++)
58         Data[i]=RANDMIN+rand()%(RANDMAX-RANDMIN);
59     cout<<"Before Change,Data="<<endl;
60     for(int i=0; i<CNT; i++)
61         cout<<Data[i]<<"    ";
62     cout<<endl;
63 /*
64 @将数组用快速排序算法排序,并显示
65 */
66     quicksort(Data,0,CNT-1);
67     cout<<"After Change,Data="<<endl;
68     for(int i=0; i<CNT; i++)
69         cout<<Data[i]<<"    ";
70     cout<<endl;
71     return 0;
72 }

 

posted @ 2017-04-04 21:10  大大维  阅读(259)  评论(0编辑  收藏  举报