随笔分类 -  排序算法

一些排序的算法。
摘要:怎么理解桶式排序呢?简单地说,桶式排序就是当我们知道待排序的每一个数据都大于等于零,并且小于一个正整数M,那么我们给出一个大小为M的数组,称之为bucket。于是这个数组能够容纳待排序的每一个数据的信息,我们遍历待排序数据,对于每一个数据i,我们使对应的bucket[i]加1。遍历完成之后,我们输出... 阅读全文
posted @ 2014-11-01 14:03 nipan 阅读(531) 评论(0) 推荐(0)
摘要:快速排序是递归的思路谈起来是很简单的:(1)当待排元素S个数为1的时候,什么也不做。(2)在待排元素S中取一个元素作为枢纽pivot。(3)将待排元素分成三份:小于pivot的元素S1、pivot它自己、大于pivot的元素S2。(4)对小于pivot的元素S1进行快速排序,对大于pivot的元素S... 阅读全文
posted @ 2014-10-30 16:23 nipan 阅读(263) 评论(0) 推荐(0)
摘要:堆排序,就是利用二叉堆的特性来完成排序的工作。这里假定我们要完成对一个数组进行从小到大排序的工作,那么利用最小堆(见《二叉堆 - 最小堆》)的特性,对于一个已经建好的最小堆,我们每次以DeleteMin函数取出最小的元素,放入一个临时数组中,如此一来,就完成了对该数组的排序。时间复杂度的话,建立堆的... 阅读全文
posted @ 2014-10-29 16:17 nipan 阅读(312) 评论(0) 推荐(0)
摘要:我体会的希尔排序,是插入排序的的一种改进,对待排序的数组以一定的间隔划分成子数组,将这些子数组进行插入排序。随后间隔减小,划分新的子数组,插入排序。直至间隔为1,对完整的数组进行插入排序。贴出希尔排序的实现和插入排序的实现,可以进行对比。 1 // Shell sort, can be treate... 阅读全文
posted @ 2014-10-28 10:12 nipan 阅读(210) 评论(0) 推荐(0)
摘要:先说一下,这个归并排序(版本一)是我自己的一些想法。简单地浏览了一下书本(《算法:C语言实现》(第三版)),实现方法并不一致。但是这个算法我测试了一下,还行。归并排序:分治法的思路。把一个待排序的数组(arr)分成两半(arrA和arrB)进行归并排序。在归并排序的过程中,arrA再分成两半……这个... 阅读全文
posted @ 2014-10-26 21:43 nipan 阅读(219) 评论(0) 推荐(0)
摘要:简单实现了一下插入排序的算法,针对数组进行排序。插入排序:针对一个需要排序的数组,我们把它的第一个元素当成已经排好的序列。然后我们从第二个元素开始,一个元素接着一个元素地(见第一个循环,i从1到len-1)往这个已经排好的序列当中插入“新”的元素,每次插入的时候要保证这个新的元素在这个序列中是有序的... 阅读全文
posted @ 2014-10-26 21:32 nipan 阅读(176) 评论(0) 推荐(0)

点击右上角即可分享
微信分享提示