潘家园网站建设公司,安徽网络seo,阳朔到桂林大巴时刻表,富蕴县建设局网站排序问题——晴问题库 排序问题是线性数据的常考问题#xff0c;在解晴问题库时总结归纳以下关于排序的解题方法和思路。 感谢晴神 排序问题是数据结构中十分重点的一部分。 可以分为五个大部分#xff1a;
插入排序选择排序交换排序基数归并
再具体往下分#xff1a;
插…排序问题——晴问题库 排序问题是线性数据的常考问题在解晴问题库时总结归纳以下关于排序的解题方法和思路。 感谢晴神 排序问题是数据结构中十分重点的一部分。 可以分为五个大部分
插入排序选择排序交换排序基数归并
再具体往下分
插入排序
直接插入顺or链稳定折半插入顺稳定希尔顺不稳定
选择排序
直接选择排序顺不稳定树选顺不稳定堆排顺不稳定
交换排序
冒泡顺or链稳定快排顺or链不稳定
基数顺稳定归并顺稳定
其中快排是相对来说最经常在综合题中使用的方法。 把无序变为有序会使许多看似复杂的问题简单化。 下面以晴问题库为总结基准 排序问题 排序问题——晴问题库一、插入排序1. 直接插入2. 折半插入3. 希尔 二、选择排序1. 直接选择2. 堆排 三、交换排序1. 冒泡排序2. 快排 四、基数五、归并 一、插入排序
1. 直接插入
2. 折半插入
3. 希尔
二、选择排序
1. 直接选择
2. 堆排
三、交换排序
1. 冒泡排序
冒泡排序的基本思想是将数组划分为尚未有序的部分左边和已经有序的部分右边每一轮从左到右遍历尚未有序部分的元素判断相邻两个元素的大小如果左大右小那么就交换这两个元素这样一直交换直到把尚未有序部分中的最大元素交换到尚未有序部分的最右边。由于这个最大元素一定比已经有序的部分中的所有元素小所以不必再继续和已经有序的部分比较了这个元素在下一轮中视为在已经有序的部分中。
简单来说就是通过交换整理前半部分后半部分不断增加前部分不断减少。
#includecstdio
#includealgorithm
using namespace std;
const int MAXV100;
int a[MAXV];int main(){int n;scanf(%d,n);for(int i0;in;i){scanf(%d,a[i]);}//核心部分for(int i1;in;i){for(int j0;jn-i;j){if(a[j]a[j1]){swap(a[j],a[j1]);}}}for(int i0;in-1;i){printf(%d ,a[i]);}printf(%d,a[n-1]);return 0;
}
2. 快排
四、基数
五、归并 将继续更新