您的位置 首页 > 科技

c语言排序算法总结 c语言数组排序解释?

c语言排序算法总结

c语言排序算法总结 c语言数组排序解释?

c语言数组排序解释?

c语言数组排序解释?

C语言对数组元素大小进行排序: 下面采用冒泡排序法实线数组从小到大排序。 思想:每次相邻两个数比较,如果升序,就把大的数放在后面,一个循环之后,就会把最大的数放在最后。 10、2、3、4、5、6、9、8、7、1是要排序的数列。第一次排序后,将最大的10放在最后,第二次排序,将剩下的2、3、4、5、6、9、8、7和1放在倒数第二的位置,等等。 具体代码如下: #include

c语言堆排序方法及其优缺点?

一、冒泡排序 一组无序数据已知a[1]、a[2]、……a[n],需要按升序排列。首先比较a[1]与 a[2]的值,如果a[1]大于a[2]则交换 二者的值,否则不变。再比较a[2]与a[3]的值,如果a[2]大于a[3]交换两者的值,否则不变。再比 较a[3]与a[4],以此 类比,最后比较a[n-1]与a[n]的值。这样处理一轮之后,a[n]这组数据中的值必须是最大的。再对a[1]~a[n- 1]方法相同 处理一轮,那么a[n-1]的值必须是a[1]~a[n-1]最大的。再对a[1]~a[n-2]以同样的方式处理一轮,以此类推。共处理 n-1 轮 后a[1]、a[2]、……a[n]按升序排列。 优点:稳定; 缺点:慢,一次只能移动两个相邻的数据。 二、选择排序 每次旅行从要排序的数据元素中选择最小(或最大)的元素,按顺序排顺序排列在已排序的序列的末尾,直到所有要排序的数字 根据元素排完。 选择排序是一种不稳定的排序方法。 n 可以直接选择和排序每个记录的文件n-1 直接选择排序以获得有序结果: ①初始状态:无序区域R[1..n],有序区域为空。 ②第1 趟排序 在无序区R[1..n]选择最小关键词的记录R[k],把它放在无序区的第一位 个记录R交换,使R[1..1]和R[2..n]分别变 增加1个记录数 新的有序区域和记录的个数减少1个 新无序区。 ③第i 趟排序 第i 在排序开始时,当前的有序区和无序区分别是R[1..i-1]和R(1≤i≤n-1)。该趟 从当前的无序区域中选择关键字 小的记录 R[k],把它放在无序区的第一位 个记录R 交换,使R[1..i]和R 单独变成记录,个数增加1 新的有序区域和记录的个数减少 1 新无序区。 这样,n 可以直接选择和排序每个记录的文件n-1 直接选择排序得到有序的结果。 优点:已知移动数据的次数(n-1 次); 缺点:比较次数多。 三、插入排序 已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、 b[2]、……b[m],需要将两者合并一个升序数列。 首先比较b[1]与a[1]的值,如果b[1]大于a[1],跳过,比较b[1]与a[2]的值, 若b[1]仍然大于a[2],继续跳过,直接跳过, 到b[1]小于a 数组中的一个数据a[x],则将a[x]~a[n]分别向后移动一个位置,将b[1]插入原件 a[x]这就完成了位置b[1] 的插入。b[2]~b[m]用同样的方法插入。(若无数组a,可将b[1]当作n=1 的数组a) 优点:稳定、快速; 缺点:比较次数不确定,比较次数越少,插入点后的数据移动越多,尤其是当数据总量巨大时,但可以用链表解决 这个问题。 四、减少增量排序 由希尔在1959 年提出,也叫希尔排名(shell 排序)。 一组无序数据已知a[1]、a[2]、……a[n],需要按升序排列。发现当n 不大的时候,插入 排序效果很好。首先取一增 量d(dltn),将a[1]、a[1 d]、a[1 2d]……第一组,a[2]、a[2 d]、 a[2 2d]……列为第二组……,a[d]、a[2d]、a[3d]……=#34#34 列为最后一组,以次等推,在每组中插入排序,然后取出d#39ltd,重复上述操=#34#34 作,直到d=#341。#34 优点:快速,数据移动少;=#34#34 缺点:不稳定,d=#34#34 取多少值,应该取多少不同的值,都不能准确地知道,只能靠经验来取。#34 优点:快速,数据移动少;=#34#34 缺点:不稳定,d=#34#34 取多少值,应该取多少不同的值,都不能准确地知道,只能靠经验来取。=#34#34 五、快速排序=#34#34 快速排序是泡沫排序的改进版,是目前已知的最快排序方法。 =#34#34 一组无序数据已知a[1]、a[2]、……a[n],需要按升序排列。先任取数据a[x]=#34#34 作为基准。比较a[x]与其他数据合并=#34#34 排序,使a[x]数据排名第一k=#34#34 位,并且使a[1]~a[k-每一个数字=#34#34 据a[x],然后采 分治策略分别对a[1]~a[k-1]和a[k 1]~a[n] 快速排序两组数据。 优点:极快,数据移动少; 缺点:不稳定。

相关文章