排序算法比较常见的有:冒泡排序、简单选择排序、直接插入排序;希尔排序、堆排序、归并排序和快速排序算法等。今天先学习一下前面三种比较简单的算法。排序的相关概念:
①排序的稳定性:两个或多个元素相等,排序过后仍然是原来的顺序则为稳定排序。
②内部排序:排序过程都在内存中进行;外部排序:需要对外存进行访问的排序过程。
③内排序算法性能因素:1、时间性能,比较与移动;2、辅助空间;3、算法复杂性
...
分类:
编程语言 时间:
2014-11-05 10:59:35
阅读次数:
228
快速排序算法:http://blog.csdn.net/liuchen1206/article/details/6954074归并排序算法:http://blog.csdn.net/left_la/article/details/8656953收集仅供参考排序代码: 1 #include 2 usi...
分类:
编程语言 时间:
2014-11-04 10:36:24
阅读次数:
250
快速排序对于n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为O(n2)的排序算法,虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序中最好的选择,因为它的平均性能非常好:它的期望时间复杂度是O(nlgn),而且O(nlgn)中隐含的常数因子非常小。1、快速排序的描述 快速排序算法采用的....
分类:
编程语言 时间:
2014-11-03 11:23:38
阅读次数:
280
如果要我们找出一个数组中的最小(最大)的元素,那么第一反应肯定是使用最小(最大)堆。时间复杂度等同于建堆的复杂度,这里是O(N)。如果要我们找出一个数组中的第k个最小的元素,那么我们依然可以使用最小堆,删除掉k次的最小值,就得到了结果。复杂度是O(N + klogN)。如果要我们找出一个数组的中值,...
分类:
编程语言 时间:
2014-10-31 15:18:15
阅读次数:
248
function quicksort(arr){ function q(start,end){ if(start>=end){return;} var pivot= start, temp = arr[pivot], i = start+1; for(;i=end){...
分类:
编程语言 时间:
2014-10-29 01:50:05
阅读次数:
172
快速排序算法原理:见上图描述。
代码如下:
package com.huan;
import java.util.Arrays;
import java.util.Random;
public class QuickSort {
public static void main(String[] args) {
int[] data = new int[10];
for (int ...
分类:
编程语言 时间:
2014-10-28 12:18:05
阅读次数:
249
快速排序作为排序算法中的战斗机,一直是排序算法里面用的最多也是考的最多的一个算法已经证明,对n个元素进行排序,最优的算法也是需要NLogN的时间复杂度,而快速排序的时间复杂度就是NlogN,所以快速排序是排序算法中最优算法中的一个,下面我们继续来探索一下神奇的快速排序算法吧快速排序的核心思想:每次排...
分类:
编程语言 时间:
2014-10-22 23:30:28
阅读次数:
268
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地...
分类:
编程语言 时间:
2014-10-20 18:48:25
阅读次数:
264