简学:数据排序问题

所谓排序,就是使一串数字,按照递增或递减的排列起来的操作。排序算法,就是如何使得数据按照要求排列的方法。

简学:数据排序问题

假设有一个无序数列:{7,3,9,2,5,1,8},将其按从小到大的顺序排列。

方案1:冒泡排序;

冒泡排序就像汽水中的许多小气泡,不断的飘到上面来。这是因为组成小气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动。其思想就是把相邻的元素两两比较,根据大小来交换元素的位置,过程如下:

简学:数据排序问题

根据上表不断的重复比较,当某一轮比较,所有元素都未发生位置变动,即表明排序完成。

方案2:鸡尾酒排序;

鸡尾酒排序是将冒泡排序的一个改动,其思想是第一轮从左到右,寻找最大元素,第二轮是从右到左,寻找最小元素,其适用于序列中有一段数据有一定的排序规律。过程如下:

简学:数据排序问题

同样当某一轮比较,所有元素都未发生位置变动,即表明排序完成。

方案3:快速排序;

冒泡排序是在每一轮只把一个元素冒泡到数列的一端,而快速排序则是利用分治法的思想在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成了两个部分。

其中基准元素的选择,有多种方法,可以选择第一个元素作为基准元素,也可以每次随机选择一个元素作为基准元素。基准元素的选择影响着分治的效果,假设基准元素选择的刚好是最大元素或者最小元素,则分治将没有任何意义。

选定了基准元素以后,要做的就是把其他元素当中小于基准元素的都移动到基准元素一边,大于基准元素的都移动到基准元素另一边。

定义三个指针:L指向最左元素=1,R指向最右元素=7,I指向基准元素=1,X代表一个坑,基准元素是第一个坑。

简学:数据排序问题

方案4:计数排序

建立数组Array={a0,a1,a2,,,,a9},将序列值作为数组的下标,依次对相对应的下标计数,a0到a9初始值为0;

简学:数据排序问题


分享到:


相關文章: