| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 394 人关注过本帖, 1 人收藏
标题:C++八大排序法1~4
只看楼主 加入收藏
lyb661
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:12
帖 子:43
专家分:61
注 册:2018-12-12
结帖率:100%
  问题点数:0  回复次数:2   
C++八大排序法1~4
///C++八大排序法1~4
///   作者:lyb661(190115)
/*上段时间一直在看C++排序算法。略有心得,对网络上的排序代码进行一定程度的简化,
让代码更简洁,直观,易于理解,主要做法是减少代码长度,精简局部变量的数目,
让循环有规律,便于记忆。由于时间仓促,没有更多注释,过一段时间再详细解释一下。
本文使用注释文字,全篇文稿可以直接进行编译,运行。*/
#include <iostream>

using namespace std;

void swap_arr(int& a,int& b) ///交换数组元素
{
    int temp=a;
    a=b;
    b=temp;
}

void print_arr(int a[],int n)  ///打印数组元素
{
    for(int i=0;i<n;i++){
        if(i>0)
            cout<<' ';
        cout<<a[i];
    }
}

void bubble_sort(int a[],int n) ///1.冒泡排序
{
 for(int i=0;i<n-1;i++)
        for(int j=0;j<n-1-i;j++)
            if(a[j]>a[j+1])
                swap_arr(a[j],a[j+1]);
}

void select_sort(int a[],int n)  ///2.选择排序
{
    int k=0;
    for(int i=0;i<n-1;i++){
        k=i;
        for(int j=i+1;j<n;j++)
            if(a[k]>a[j])
                k=j;
        swap_arr(a[k],a[i]);
    }
}
void insert_sort(int a[],int n)   ///3.插入排序
{
    for(int i=0;i<n-1;i++){
        int j=i+1;
        while(j>0&&a[j]<a[j-1]){
            swap_arr(a[j],a[j-1]);
            --j;
        }
    }
}

void quick_sort(int a[],int low,int high)   ///4.快速排序
{
    if(low>=high)
        return;
    int i=low,j=high,k=a[i];
    while(i<j){
        while(i<j&&a[j]>=k)
            j--;
        if(i<j)
            a[i]=a[j];
        while(i<j&&a[i]<=k)
            i++;
        if(i<j)
            a[j]=a[i];
        a[j]=k;
        quick_sort(a,low,i-1);
        quick_sort(a,i+1,high);
    }

}
int main()
{
    int a[]={12,22,3,2,85,54,98};
    int n=sizeof a/sizeof a[0];
    print_arr(a,n);
    cout<<"\n---------split line----------\n";
    quick_sort(a,0,n-1);
    ///insert_sort(a,n);
    ///select_sort(a,n);
    ///bubble_sort(a,n);
    print_arr(a,n);
    cout << "\nHello world!" << endl;
    return 0;
}


[此贴子已经被作者于2019-1-17 11:02编辑过]

2019-01-15 22:00
lyb661
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:12
帖 子:43
专家分:61
注 册:2018-12-12
  得分:0 
发一个帖子,然后一直显示正在提交,不得已重复发,结果一个了发了三遍。但愿主编不要误会俺们在灌水!   
2019-01-15 22:19
一只小千亦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-2-27
  得分:0 
萌新表示一脸蒙13 666666666666666666666
2019-03-04 20:37







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.086505 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved