C语言学习日志23.11.04

1.在一些编程题目中需要我们对一些乱序的数据进行排序.我学了几种排序方法.下面来介绍.

1.冒泡排序:

这就是冒泡排序的基本代码.首先我们要用两层for循环.第一层是从第一个数据一直遍历到最后一个.第二层是将两个相邻的函数进行比较.当这层循环结束时,我们就将数据里最大的放在的最后一位.至于为什么第二层时j<n-1-i,因为每进行完第一层循环时,就将一个数放在的应该放在的位置.此后的循环不需要在对其进行处理,所以就需要减去i,来降低循环次数.而n<i-1则是我们已经将前n-2的数排好时,最后一位自然而然就到位了.

2.快速排序:

这就是快速排序的基本代码.此代码的基本思想为首先确定一个基准元素,让比基准元素大的排在右边,比基准元素小的排在左边,这里我们将基准元素定为中间值.在逐一比对.因为进行一次后我们只是进行的简单的分堆,所以在分完后我们还需要对分好的两堆数据重复上面的处理.

 3.qsort排序:

这个感觉跟快速排序差不多,但因为代码有所差异,所以也讲解一下.首先qsort里的变量分别是排序数组的起始位置,数据个数,每个数据所占的字节,compare是进行比较两个节点的函数.再来看compare是如何进行比较的,主要是去理解return 那里的代码是如何运行的.

如果 node1->x 小于 node2->x,则返回负值;如果相等,则返回零;如果大于,则返回正值

如果 compare 函数返回值为正数(例如1),则表示第一个元素应该排在第二个元素之后,即将这两个元素进行交换。如果数组中的元素是结构体类型,那么就会根据比较函数所定义的规则,将右端点较大的区间放在后面。

如果 compare 函数返回值为负数(例如-1),则表示第一个元素应该排在第二个元素之前,即不进行交换。如果数组中的元素是结构体类型,那么就会根据比较函数所定义的规则,将右端点较小的区间放在前面。

如果 compare 函数返回值为0,则表示两个元素相等,它们的顺序可以是任意的。

以上就是我学到的几种排序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值