为了更好地进行数据处理和数据分析,我们常常需要对数据进行排序。排序算法作为计算机科学已经被广泛研究和应用。排序算法的优化不仅对计算机科学领域有着深远的影响,也对其他领域的发展起到了重要的作用。因此我也是历经艰辛总结出了c语言常见的三种排序方式。
选择排序
开始写代码前我们要了解选择排序的逻辑思维,假设我们要将(1 6 5 7 8 4 7)从小到大依次排序,首先,我们要将一号位的 1 分别与后面的六个数字比大小,如果有数字比 1 小,那就交换亮着的位置,否则不交换,下一步就是将二号位的 6 分别与后面的五位数字交换,细心的同学可能发现,5 和 4都比 6 小,究竟交换哪两个位置,不急,我们分析一下便知道了,三号位的 5 比二号位的 6 小,交换位置得到(1 5 6 7 8 4 7)二号位的 5 再分别和四号位的 7,五号位的8,比较,不交换位置,当和六号位的4比较时交换位置得到(1 4 6 7 8 5 7)多次比较最终得(1 4 5 6 7 7 8)
因此我们需要一个for循环分别取出我们数字,再嵌套一个for 循环让这些数字比较大小。
冒泡排序
冒泡排序字面意思泡泡从水里冒出来,由小到大,而它的排序方式类似于选择排序,也是前面的数字和后面的数字比较大小,然后交换位置,而冒泡排序是两个相邻的数字比较大小。
(1 6 5 7 8 4 7)先是一号位的1和二号位的6比较,然后二号位的6和三号位5比较,交换位置,然后三号位就变成了6再和四号位的7比较依次类推。因此依然要用两个for循环用来取数字,循环比较大小。
插入排序
插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。经常插队的朋友应该很了解。