您的位置:首页 > 编程语言 > C语言/C++

关于c语言几种排序方法的理解

2017-04-17 15:38 447 查看
1、选择排序法:每一个循环,假定要比较的数组中的第一个数字为最大(小)数,依次与剩余的未比较的数比较,找出要排序的数组中的一个最大(小)数,拿出放在第一的位置位置,再从剩余的数据中找出一个最大(小)数放在上一个最大(小)数的后面,一次直到只剩最后一个数字。(思路简单,计算量大,适合小数据的排序。)

2、冒泡排序法:假定要讲数组从小到大排序,则在第一轮的循环中,由最后一个数字与倒数第二个数字比较,较小者放到倒数第二的位置,较大者放到最后的位置;然后将倒数第二个与倒数第三个比较,将较小者放到倒数第三的位置,将较大者放到倒数第二的位置。。。依次到最小的数字到第一的位置,然后再对除第一个数字外的其他数字进行上面方法的排序,直到只剩最后一个数字为止。冒泡法就是相邻数之间最小(大)数的传递。(计算量较大,适合小数量的数组排序。)

3、交换法排序:同冒泡法的区别在于,冒泡法是将符合条件的数组由相邻的位置想前传输,而交换法是符合条件的数至于一个位置交换,即将符合出现在某个位置的数直接向那个位置交换。(计算量较大,适合小数量的数字排序)

4、插入法排序:取第一个数作为站桩的基准位置,然后再取出另一个数,放到合适的位置。可以称之为依次战队法。(计算量较大,适合小数组排序)

5、对折法排序:利用递归法,每次取出中值后,(如果是由小到大排序)从左向右先依次与左面的数比较,小于左面的数时,与之交换位置,完成后再从右向左将右侧的数与现在的中值比较,小于中值时,与中值交换位置,左右完成之后则中值左侧数小于中值,中值右侧的数大于中值。再利用递归法对左右两侧的子数组对折法排序。。。(适合大数据的排序)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 排序 基础