快速排序 和归并排序一样,也是采用分治(Divide and Conquer)思想。分为三步: 分解:将数组A[p…q]划分成两个数组A[p..r-1]和A[r+1..q],使得A[p..r-1]中的每个元素…
分类:排序算法
【算法】基数排序
计数排序 学习基数排序之前首先学习计数排序。 计数排序假设每个元素都是在0到k之间的一个整数。 基数排序的基本思想,对于每个元素x,如果我们知道了小于x的元素的个数,就可以确定输出数组中元素x的位置,那么直接将元素x放到…
【算法】桶排序
桶排序 桶排序(Bucket Sort)假设输入数据服从均匀分布,然后将输入数据均匀地分配到有限数量的桶中,然后对每个桶再分别排序,对每个桶再使用插入排序算法,最后将每个桶中的数据有序的组合起来。前面了解到基数排序假设输…
排序算法入门之冒泡排序
在开发中,对一组数据进行有序地排列是经常需要做的事情,所以掌握几种甚至更多的排序算法是绝对有必要的 本文章介绍的是排序算法中较简单的一种算法:冒泡排序 题外话:在深入学习更多排序算法后和在实际使用情况中,冒泡排序的使用还…
排序算法入门之冒泡排序优化
这篇文章是对上一篇文章中的冒泡排序进行优化 先来说说,冒泡排序哪些地方需要优化: 根据上一篇文章的内容,可以知道冒泡排序的核心是两两对比进行交换。如果有一个无序数列(2,1,3,4,5,6,7,8,9,10) 按照上一篇…
排序算法入门之简单选择排序
在学了冒泡排序后,会发觉这种算法就是不断比较交换。虽简单直接,显然给人一种繁琐的感觉。那有没有更好一点的算法呢?这当然有啦,没有就糟糕透了 :-P 这篇文章介绍一种较冒泡要好的排序算法:简单选择排序 看到“选择”这两字估…
学过的算法中最快捷——快速排序法
前言 上次总结了其他的三种算法:选择排序、冒泡排序和插入排序,这次总结一个更加高效的排序算法——快速排序法,如果想要了解其余三种算法,请移步c#版选择法、冒泡法、插入…
算法入门--堆排序2(建立最小堆,从大到小)
#include <stdio.h> #include <stdlib.h> int left(int i)//返回左孩子位置 { return 2*i; } int right(int i)//…
算法-合并两个排序的链表
题目: 输入两个递增排序的链表,合并着两个链表并使新链表中的结点仍然是按照递增顺序的。例如输入的链表1和链表2如下,合并后的为链表3。链表的结点定义如下: struct ListNode { int value; Lis…
算法导论22.4拓扑排序 练习总结
22.4-1 给出算法 TOPOLOGICAL-SORT 运行于图 22-8 上时所生成的结点次序。这里的所有假设和练习 22.3-2 一样。 ANSWER: 22.4-2 请给出一个线性时间的算法,算法的输入为一个有向…
插入、希尔、冒泡、快速、选择、堆、归并排序算法和性质
一、插入排序 1、直接插入排序 2、希尔排序 二、交换排序 1、冒泡排序 2、快速排序 三、选择排序 1、简单选择排序 2、堆排序 四、归并排序 1、二路归并排序 五、不同排序算法比较
c语言:输入任意10个正整数,按照升序排序输出:(冒泡算法)
C语言永远不会过时 其实学编程关键是学习其思想,如果你精通了一门,再去学其他的时候也很容易上手。C不会过时的,尤其是在unix、linux操作平台上,学好C是必须的。 C跟C++在很多方面也是兼容的,c是c++的基础。 …