排序
作者:互联网
冒泡排序(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