其他分享
首页 > 其他分享> > 排序

排序

作者:互联网

冒泡排序(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