1. 排序( sorting)
的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。其确切的定义为:
假设有n个数据元素的序列{R1 ,
R2 ,
… , Rn},其相应关键字的序列是{K1 ,
K2 ,
… , Kn} ,通过排序要求找出下标 1
, 2 , … , n的一种排列p1 ,
p2 ,
… , pn,使得相应关键字满足如下的非递...
分类:
编程语言 时间:
2015-02-15 12:14:26
阅读次数:
182
序言 这是一篇全面介绍 Webkit 和 Gecko 内部操作的入门文章,是以色列开发人员塔利·加希尔大量研究的成果。在过去的几年中,她查阅了所有公开发布的关于浏览器内部机制的数据(请参见资源),并花了很多时间来研...
分类:
其他好文 时间:
2015-02-10 15:37:40
阅读次数:
320
一.介绍插入排序中有比较简单的直接插入排序,也有在直接插入排序上升级版本:希尔排序.插入排序(insertion sort)的基本思想是:每趟将一个元素,按其关键字大小插入到它前面已排序的子序列中,使得插入后的子序列仍是排序的,依此重复,直到全部元素插入完毕.二.详解1.直接插入排序思想指导方法:首...
分类:
编程语言 时间:
2015-02-07 22:52:10
阅读次数:
212
1.直接插入排序
直接插入排序是一种最简单的排序算法,它的基本操作是将一个记录插入到已经排序好的序列中,从而得到一个新的有序表。直接插入排序算法原理如下图所示:
直接插入排序算法如下:void InsertSort(int arr[],int length)
{
int key,j;
for(int i=1;i<length; i)
{
ke...
分类:
编程语言 时间:
2015-02-07 18:55:24
阅读次数:
155
上一篇文章我们一起学习了直接插入排序,它的原理就是把前i个长度的序列变成有序序列,然后循环迭代,直至整个序列都变为有序的.但是说来说去它还是一个时间复杂度为(n^2)的算法,难道就不能再进一步把时间复杂度降低一阶么?可能有很多同学说快速排序,堆排序,我都会,这些简单的插入排序我都不屑于用.确实,以上几种算法相对于之前的O(n^2)级别的算法真的是弱爆了,效率可能还会差上千万倍,但是我们不妨翻看一下...
分类:
编程语言 时间:
2015-02-06 16:56:28
阅读次数:
121
<?php
/**
*BubbleSort0($arr):冒泡排序
*BubbleSort1($arr):冒泡排序——优化
*BubbleSort2($arr):冒泡排序——另一种实现方法
*SelectSort($arr):选择排序
*InsertSort($arr):插入排序
*ShellSort($arr):希尔排序
*/
classSort{
/**
*冒泡排序:指的是两两相邻的数据直接..
分类:
编程语言 时间:
2015-02-05 07:13:33
阅读次数:
167
插入排序的算法复杂度为O(n2),但假设序列为正序可提高到O(n),并且直接插入排序算法比較简单,希尔排序利用这两点得到了一种改进后的插入排序。一. 算法描写叙述希尔排序:将无序数组切割为若干个子序列,子序列不是逐段切割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小.....
分类:
编程语言 时间:
2015-02-04 18:28:19
阅读次数:
177
一、插入排序
?思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。
?关键问题:在前面已经排好序的序列中找到合适的插入位置。
?方法:
–直接插入排序
–二分插入排序
–希尔排序
①直接插入排序(从后向前找到合适位置后插入)
1、基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到...
分类:
编程语言 时间:
2015-01-29 17:47:36
阅读次数:
206
希尔排序是不稳定的,但是它比直接插入排序要快得多。
希尔排序又称为缩小增量排序,这是对直接插入排序的一种改进方法,其过程是:首先以d1 (0进行直接插入排序。然后,以d2(0
一般的初次取序列的一半为增量,以后每次减半,直到增量为1。
借用百度百科里的一张图,更直观一些。
// 希尔排序 x待排序数组, n数组长度
private static void shellSor...
分类:
编程语言 时间:
2015-01-29 17:45:49
阅读次数:
199
本次主要记录一些经典的排序算法,其中包括冒泡排序、直接选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序、桶排序以及计数排序和基数排序。首先会给出这些排序算法的基本思想,然后给出实现的代码,最后会给出其时间复杂度。
1:冒泡排序
思想:
(1):比较相邻的前后两个元素,如果后面的数据小于前面的数据,则交换这两个数据的位置。这样经过一次遍历,最小的元素将在第0个位置,属于”冒泡”.
(...
分类:
编程语言 时间:
2015-01-29 17:39:27
阅读次数:
288