综述 最近复习了各种排序算法,记录了一下学习总结和心得,希望对大家能有所帮助。本文介绍了冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、计数排序、桶排序、基数排序9种经典的排序算法。针对每种排序算法分析了算法的主要思路,每个算法都附上了伪代码和C++实现。 算法分类 原地排序(in-pla ...
分类:
编程语言 时间:
2018-06-14 18:31:17
阅读次数:
216
#一个列表进行排序test_list = [34,13,57,38,3,30,58,394,92,24]'''选择排序就是先默认选择一个值然后依次与后面的值比较如果比他小就交换值,然后可以得到最小的值,下面这个最小的值不再比较 在剩下的数据中重复此操作,直到剩下的值为空或者以为止''' def se ...
分类:
编程语言 时间:
2018-06-14 15:03:29
阅读次数:
167
#对lt列表里元素从小到大排序#一,选择排序法lt = [3, 5, 2, 1, 8, 4]#求出lt的长度n = len(lt)#外层循环确定比较的轮数,x是下标,lt[x]在外层循环中代表lt中所有元素for x in range(n-1): #内层循环开始比较 for y in range(x ...
分类:
编程语言 时间:
2018-06-11 22:00:39
阅读次数:
821
def bubble(num): for i in range(len(num)-1): for j in range(len(num)-i-1): if(num[j]>num[j+1]): temp = num[j] num[j] = num[j+1] ... ...
分类:
编程语言 时间:
2018-06-09 18:52:48
阅读次数:
177
前言 简单选择排序是一种选择排序。 选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。 算法思想 简单排序很简单,它的大致处理流程为: 从待排序序列中,找到关键字最小的元素; 如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换; 从余下 ...
分类:
编程语言 时间:
2018-06-08 22:02:29
阅读次数:
184
前面讲的是比较排序算法,主要有冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 非比较排序算法:计数排序,基数排序,桶排序。在一定条件下,它们的时间复杂度可以达到O(n)。 一,计数排序(Counting Sort) (1)算法简介 计数排序(Counting sort)是一种稳定的排序 ...
分类:
编程语言 时间:
2018-06-08 00:51:06
阅读次数:
245
冒泡排序 选择排序 快速排序 归并排序 插入排序 堆排序 ...
分类:
编程语言 时间:
2018-06-06 23:59:24
阅读次数:
369
1,什么是堆 堆是具有下列性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆 (例如图 9-2 左图所示) ; 或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆(例如图 9-2 右图所示)。 2,为什么出现堆排序 前面介绍的(简单)选择排序,需要每次从未排序序列中选 ...
分类:
编程语言 时间:
2018-06-06 21:48:25
阅读次数:
241
概念: 通常人们整理桥牌的方法是一张一张的来,将每一张牌插入到其他已经有序的牌中的适当位置。在计算机的实现中,为了要给插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位。与选择排序一样,当前索引左边的所有元素都是有序的,但他们的最终位置还不确定,为了给更小的元素腾出空间,它们可能会被 ...
分类:
编程语言 时间:
2018-06-06 15:37:12
阅读次数:
151
基本思想:首先,找到数组中最小的那个元素,其次将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。 ...
分类:
编程语言 时间:
2018-06-06 15:35:51
阅读次数:
203