package?org.webdriver.autotest.Study;
import?java.util.*;
public?class?sort_examp{
?public?static?void?main(String[]?args)
?{
??Integer[]?num={49,38,65,97,76,13,27,49,78,34,12,64,1}...
分类:
编程语言 时间:
2015-08-19 00:47:27
阅读次数:
136
问题描述:求一个数组的最大k个数,如,{1,5,8,9,11,2,3}的最大三个数应该是,8,9,11
问题分析:
1.解法一:最直观的做法是将数组从大到小排序,然后选出其中最大的K个数,但是这样的解法,复杂度是O(logn*n),但是有时候并不需要排序,用简单的选择排序,或者是冒泡排序,那么就K轮的交换或者是选择,就可以得出结论,复杂度是O(n*k),当K很大的时候排序可能是更好的解...
分类:
编程语言 时间:
2015-08-18 19:35:18
阅读次数:
155
八大排序算法的稳定性及复杂度总结如下:选择排序算法准则每种排序算法都各有优缺点。因此,在实用时需根据不同情况适当选用,甚至可以将多种方法结合起来使用。影响排序的因素有很多,平均时间复杂度低的算法并不一定就是最优的。相反,有时平均时间复杂度高的算法可能更适合某些特殊情况。同时,选择算法时还得考虑它的可读性,以利于软件的维护。一般而言,需要考虑的因素有以下四点: 1.待排序的记录数目n的大小;2.记录...
分类:
编程语言 时间:
2015-08-18 09:07:49
阅读次数:
210
15. 蛤蟆的数据结构进阶十五排序实现之堆排序
本篇名言:“谁要是游戏人生 ,
他就一事无成 ; 谁不能主宰自己 ,
永远是一个奴隶。--
歌德”
继续来看下堆排序。
欢迎转载,转载请标明出处:
1. 堆排序
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索...
分类:
编程语言 时间:
2015-08-17 23:42:25
阅读次数:
210
堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=...
分类:
编程语言 时间:
2015-08-17 23:19:40
阅读次数:
174
选择排序:
和冒泡排序的比较
选择排序是一种和冒泡排序很相似的排序方法,冒泡排序是通过两两比较,不断调换,逐个推进进行排序的,两两比较,和两两调换都是比较费时的,选择排序可以说是冒泡排序的一种改进.冒泡排序每趟遍历比较的目的是要找出最小值,但是过程中很多交换都是无价值的交换,很浪费时间.所以选择排序的做法是:每次遍历,只选择最值元素进行交换,这样一次遍历,只需进行一次交换即可,从而避免了其它无...
分类:
编程语言 时间:
2015-08-17 15:38:33
阅读次数:
137
**选择排序 原理:如果拿0角标上的元素依次和后面的元素进行比较, 第一次内循环结束后,最小值出现在了0角标位置。 你就想想我们是如何打星星 **** *** ** * public static void selectSort(int[] arr) { //iarr[j+1]) { int te....
分类:
编程语言 时间:
2015-08-17 13:40:27
阅读次数:
129
排序:将一连串记录按照关键字的大小(从大到小或从小到大)进行排列。
稳定性:如果两个大小相同的关键字的相对位置在排序前和排序后是一样的(Ai等于Aj,排序前Ai 在Aj的前面,排序后Ai 还是在Aj的前面),那么这种算法就是稳定的。
稳定的排序算法有:冒泡排序、直接插入排序、归并排序、基数排序
不稳定的排序算法有:选择排序、快速排序、希尔排序、堆排序
冒泡排序:...
分类:
编程语言 时间:
2015-08-17 12:06:36
阅读次数:
194
14. 蛤蟆的数据结构进阶十四排序实现之简单选择排序
本篇名言:“即是我们是一支蜡烛也应该 "
蜡烛成灰泪始干 " 即使我们只是一根火柴也要在关键时刻有一次闪耀即使我们死后尸骨都腐烂了解也要变成磷火在荒野中燃烧。 --
艾青”
继续来看什么是简单选择排序。
欢迎转载,转载请标明出处:
1. 简单选择排序
设所排序序列的记录个数为n。i取1,2...
分类:
编程语言 时间:
2015-08-16 23:13:11
阅读次数:
123
排序:对一序列对象根据某个关键字进行排序;
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;
例如:插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序
不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;
例如:选择排序(5 8 5 2 9)、快速排序、堆排序
内排序:不占用额外内...
分类:
编程语言 时间:
2015-08-16 23:12:27
阅读次数:
172