快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要 小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。最坏情况的时间复杂度为O(n2),最好 情况时间复...
分类:
其他好文 时间:
2014-07-19 17:04:01
阅读次数:
228
在排序算法中,简单排序主要有三种,分别为冒泡排序、选择排序、插入排序,学习理解好这三种排序算法有助于进一步研究数据结构与算法分析。下面,简单地谈一谈冒泡排序、选择排序、插入排序的原理及区别。冒泡排序原理:1、比较相邻的元素。如果前一个比后一个大,它们就交换。2、每对元素都要进行同样的动作,从后往.....
分类:
其他好文 时间:
2014-07-19 16:32:37
阅读次数:
203
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个...
分类:
其他好文 时间:
2014-07-19 15:23:57
阅读次数:
241
直接插入排序是一种比较简单的排序方法,他的原理类似于我们玩牌的时候抓牌,手中的牌是按照一定的顺序排列的,然后摸到的牌先进行查找顺序,将牌插到应该插入的地方,直到最后一张牌的插入,那么手中的牌都是有序的。
数列的直接插入排序也是这样的,将第一个数看做是排列有序的数列,然后将后面的数依次插入到数列中:
代码如下
void _insert_sort(int *A,int size)
{
int ...
分类:
其他好文 时间:
2014-07-19 02:35:06
阅读次数:
186
本博文介绍两个最常被提起的排序算法:冒泡排序和快速排序。冒泡排序是入门排序算法,思路比较常规,但确是最耗时的排序算法。另一个是被誉为“20世纪最伟大的十大经典算法”的快速排序,以及针对数组特征进行优化的“随机快排”和“平衡快排”。
分类:
其他好文 时间:
2014-07-18 21:17:33
阅读次数:
398
题目来源,待字闺中,原创@陈利人 ,欢迎大家继续关注微信公众账号“待字闺中”
排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。
分析:这个题目,尽管也是排序,但却不能使用快速排序的方法。只有三个元素,如果时间复杂度仍旧是O(nlogn),显然不是最好的。那就可以使用线性的排序算法,例如计数排序,可是题目中要求,不能够对1,2,3进行统计个数。那该如何处理呢?请大家看下...
分类:
其他好文 时间:
2014-07-17 19:34:43
阅读次数:
291
算法思想:遍历序列,当前元素比前一元素小时,交换他们,这样一次遍历之后,最大元素出现在序列尾端,遍历n次之后序列即为有序序列。算法实现: 1 BUBBLE_SORT(A) 2 n = length of A 3 end = n-2 4 5 while end > 0 6 ...
分类:
其他好文 时间:
2014-07-16 18:24:15
阅读次数:
151
下面介绍的是啊哈算法的冒泡排序算法:#include int main() { int a[100], i, j, t, n; scanf("%d", &n); for (i = 1; i <= n; i++) scanf("%d", &a[i]); for (...
分类:
其他好文 时间:
2014-07-16 18:20:01
阅读次数:
101
排序算法作为许多程序的中间步骤,是计算机科学中的一个基本操作。一、问题描述 排序算法输入的是n个数的一个序列,输出为输入的一个排列,满足a1’ a[min]) min = j; //交换 if(min != i) { ...
分类:
其他好文 时间:
2014-07-16 15:45:48
阅读次数:
222
写在前面:
排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。因此排序掌握各种排序算法非常重要。对下面介绍的各个排序,我们假定所有排序的关键字都是整数、对传入函数的参数默认是已经检查好了的。只是简单的描述各个算法并给出了具体实现代码,并未做其他深究探讨。
基础知识:
...
分类:
其他好文 时间:
2014-07-16 09:47:22
阅读次数:
296