• [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 }
  • 相关阅读:
    遍历数据类型数组方式
    for 循环 和for..in循环遍历数组 的区别
    多个区域内有相同属性名称子元素,同一区域内 操作DOM子集 使用$("选择器",context)方法
    CSS 使用技巧
    JavaScript 动态加载页面 js文件
    angular2环境配置
    在路上●我的年青●逐步前进
    ARM v8-A 系列CPU的MMU隐射分析
    ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析
    二维图像的投影和图像重建分析之傅里叶变换法
  • 原文地址:https://www.cnblogs.com/liujw2114/p/6666474.html
Copyright © 2020-2023  润新知