基本排序算法的一些零碎补充
Posted yige_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本排序算法的一些零碎补充相关的知识,希望对你有一定的参考价值。
做题被卡了,原来还是因为基础不扎实。
- 冒泡排序:排序时,比较相邻的两个元素是其特点;
- 冒泡排序和插入排序稳定,而选择排序不稳定;
- 以下这段代码被我误认为是冒泡排序的一种写法,其实它是选择排序的一种写法。因为它并不总是进行相邻两个元素的比较,而且每当第二重循环结束,a[i]存着的都是a[i~n]的最大值。
- 不稳定的排序算法当然可以被改造成稳定的,代价是牺牲时间和空间效率。比如下面这个是选择排序的一种稳定写法
#include<iostream>
int n,a[1005],b[1005],sign[1005];
int main() {
std::cin>>n;
for(int i=1; i<=n; i++)
std::cin>>a[i];
for(int i=1; i<=n; i++) {
int min=2147483647,pos=0;
for(int j=1; j<=n; j++) {
if(!sign[j]&&a[j]<min) {
min=a[j];
pos=j;
}
}
sign[pos]=1;
b[i]=pos;
}
for(int i=1; i<=n; i++)
std::cout<<a[b[i]]<<\' \';
return 0;
}
以上是关于基本排序算法的一些零碎补充的主要内容,如果未能解决你的问题,请参考以下文章