ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

排序

2022-07-16 17:02:02  阅读:131  来源: 互联网

标签:int 元素 cin mark ++ 排序


冒泡排序(Bubble Sort)

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

这个算法的名字由来是因为越小/大的元素会经由交换慢慢"浮"到数列的顶端。

冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。

//排序结果为升序
#include<iostream>
using namespace std;

int a[100005];
//注释部分为优化
int main(){
    int n; cin >> n;
    for(int i = 0; i < n; i++)cin >> a[i];

    for (int i = 0; i < n; ++i) {
        //int mark = 0;
        for (int j = 0; j < n; ++j) {
            if(a[i] < a[j]){
                swap(a[i], a[j]);
               // mark = 1;
            }
        }
        //if(!mark)break;
    }
    for(int i = 0; i < n; i++)cout << a[i] << " ";
    return 0;
}



选择排序

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

重复第二步,直到所有元素均排序完毕。

//排序结果为降序
#include<iostream>
using namespace std;

int a[100005];
//注释部分为优化
int main(){
    int n; cin >> n;
    for(int i = 0; i < n; i++)cin >> a[i];

    for (int i = 0; i < n; ++i) {
        //int mark = 0;
        for (int j = i+1; j < n; ++j) {//与冒泡排序不同的地方
            if(a[i] < a[j]){
                swap(a[i], a[j]);
               // mark = 1;
            }
        }
        //if(!mark)break;
    }
    for(int i = 0; i < n; i++)cout << a[i] << " ";
    return 0;
}



标签:int,元素,cin,mark,++,排序
来源: https://www.cnblogs.com/geniusgenius/p/16484615.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有