`
fdyang
  • 浏览: 79634 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

查找(Searching), 排序(Sorting)

 
阅读更多


查找.(Searching)

1. 顺序查找/线性查找. ( Linear Seraching ) 时间复杂度: O(N)
- 从线性表的一端开始,顺序扫描线性表,将扫描到的结点关键字和给定值k相比较. 相等,查找成功,否则失败。
- 用数组很方便.

2. 二分查找( Binary Searching ) 时间复杂度 O(log2 N) (2为下标)
- 线性表为排序表,用关键字k 域中间位置的结点的关键字比较。 循环进行下去.
- The binary search is not guaranteed to be faster for searching very mall lists.

3. 分块查找/索引顺序查找.

4. 哈希表查找. ( Hash Searching ) O(1)
- 通过对记录的关键字值进行某种运算,直接求出记录文件的地址。 addr(Ri) = H(keyi) , addr(Ri)为哈希函数.

 

排序. (Sorting)
1. 插入排序. (Insertion Sort ) 时间复杂度 [Time Complexity] : O(n2) (2为上标)
- 每一趟将一个待排序的记录,按其关键字值的大小插入到已经排序的部分文件中的适当位置上,知道全部插入完成.
void insertSort(sqlist r, int n){
int i,j;
for (i=2;i<=n;i++){
r[0]=r[i]; //r[0]是监视哨兵
j=i-1;
while(r[0].key<r[j].key){ //比K大的元素一次向后移动一格。
r[j+1]=r[j];
j--;
}
r[j+1]=r[i]; //在腾出的位置上吗插入r[i].
}
}

 

2. 希尔排序 ( Shell Sort ) 时间复杂度 O(nlog2n) . (2为下标)
- 把记录按下标的一定增量分组,对每组记录使用插入排序,随着增量的逐渐减少,所分成的组包含的记录越来越多,到增量减少为1时,整个

数据合成为一组,构成一组有序记录,完成排序。


3. 冒泡排序 (Bubble Sort ) 时间复杂度 O(n2) (2为上标 )
- 从最下面的记录开始,对每2个相邻的关键字进行比较,使进过一趟冒泡程序后,关键字最小的记录到达最上端。
void bubblesort (sqlist r, int n) {
int i, j , tmp;
for (i=1;i<=n-1;i++)
for(j=n;j>=i+1;j--){
if(r[j].key<r[j-1].key){
tmp=r[j];
r[j]=r[j-1];
r[j-1]=tmp;
}
}

4. 快速排序. 时间复杂度 O(nlog2n) . ( 2为下标)

-快速排序是有起泡排序改进而来的
-在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放在最终位置后,数据序列被此记录分

割成两个部分。比记录小的放在前面,大的放在后面,这个过程为一趟快速排序。之后对所有的两部分分别重

复上述过程,直至每部分只有一个记录为止。
-简单的说:每趟使表的第一个元素作为支点(pivot),将表一分为二,左小右大,对子表按递归方式继续这种

划分,直至划分的子表长为1.
-一趟快速排序采用从两头向中间扫描的方法,同时交换与基准记录逆序的记录。
-需要设置两个指针low,high ,一个支点pivot.


5. 选择排序. (Selection Sort ) 时间复杂度 O(n2) 2为上标.
- 从 (i=1,2,3,..n-1)个记录中选择最小的记录和第i个记录交换.

6. 堆排序. (Heap Sort ) . 时间复杂度 O(nlog2n) , 2 为下标.

7. 归并排序 (Merge Sort ) 时间复杂度 O(nlog2n) , 2 为下标.

-两个有序表合成一个有序表

 

分享到:
评论

相关推荐

    计算机程序设计与艺术第三卷:排序与查找Sorting and Searching(中英)

    大师Donald E. Knuth(汉名高德纳)的著作,计算机程序设计与艺术第三卷:排序与查找Sorting and Searching(中英)

    常用算法和数据结构(Sorting and Searching Algorithms)

    Sorting and Searching Algorithms:A Cookbook 常用算法数据结构

    The Art of Computer Programming, Volume 3 Sorting and Searching 2nd Edition 1998

    《计算机程序设计艺术》系列被公认为计算机科学领域的权威之作,深入阐述了程序设计理论...本书为该系列的第3卷,全面讲述了排序和查找算法。书中扩展了卷1中数据结构的处理方法,并对各种算法的效率进行了大量的分析。

    计算机程序设计艺术(中文)第三卷 排序与查找

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术 第二版(卷三)排序和查找.part2

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术 第二版(卷三)排序和查找.part1

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术 第二版(卷三)排序和查找.part3

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术-part2

    三卷中文名为《基本算法》 《半数值算法》及《排序与查找》 本书内容博大精深 作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项) "&gt;《计算机程序设计艺术》重译自Donald E...

    计算机程序设计艺术-part1

    三卷中文名为《基本算法》 《半数值算法》及《排序与查找》 本书内容博大精深 作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项) "&gt;《计算机程序设计艺术》重译自Donald E...

    计算机程序设计艺术 1-4卷 英文版

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术(第一卷).part3.rar

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术(第二卷).part4.rar

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术 第三版(卷一)基本算法.part1

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术(中文)第一卷 基本算法

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术(中文)第二卷 半数值算法

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术(第三卷).part5.rar

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术(第三卷).part4.rar

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术(第三卷).part1.rar

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

    计算机程序设计艺术(第三卷).part2.rar

    《计算机程序设计艺术》重译自Donald E...三卷中文名为《基本算法》、《半数值算法》及《排序与查找》。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖(该奖被国际公认为计算机科学领域的最高奖项)。

Global site tag (gtag.js) - Google Analytics