排序专题 总结

呃,有点尴尬,前两天写完之后没保存,吃鸡的时候电脑卡了,直接强制关机,然后就凉凉····

这个专题总的来说还算简单,无论你是用c++的qsort模板,还是自己写sort函数,其实难的都不是排序的问题,关键是数据的处理,这个就只能通过大量的刷题来提高了。

(这个总结隔的时间有点久,忘了要写什么了··)

还有就是关于qsort源码的理解,有这样一道题 就是给你一串字符串让你对其中是字母的字符进行排序,其余字符位置不变。

问题就是 为什么在cmp中直接进行判断,如果是字母进行比较,不是则位置不变。

然后我去找了qsort的源码分析

http://blog.csdn.net/gen_ye/article/details/52880461


下面是聊天记录, 懒得再写了


 qsort 源码里面 用了两种排序

一种是选择排序 一种是那个快速排序

他们的使用是由数组的大小决定的

 然后就是关于为何在cmp中进行判断 无法得到想要的结果的问题

在选择排序中,对数组中的每个元素进行遍历找到最大的, 所以在这中间要不断的进行比较和交换

但是如果你在cmp加入判断函数的话,那么那些不在判断之内的值就无法进行交换 也就是说 把你整个数组隔断了,  打个比方 :

ABC12BAC    

 前面的字母根本无法与后面的字母进行比较, 因为在中间有数字, 无法满足判断关系, 位置无法移动

再对快速排序来说

qsort里面其实用的不是平常的二分法  他用的是三路划分, 不过原理一样,就是对极端值优化了一下


排序专题就这样吧,以后有机会再补充,这周作业还没写完,告辞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值