各种排序归纳总结

根据《数据结构与算法分析——Java语言描述》一书和各技术博客知识点来总结的。

  1. 冒泡排序(Bubble sort)
  2. 插入排序(insertion sort)
  3. 希尔排序(Shellsort)
  4. 堆排序(heapsort)
  5. 归并排序(mergesort)
  6. 快速排序(quicksort)
  7. 桶式排序(bucketsort)
  8. 外部排序(external sorting)

正在编辑中。。。

新人学习总结,大神请勿喷

时间: 2024-10-22 16:09:04

各种排序归纳总结的相关文章

数据结构与算法之排序(归纳总结三)

选择排序的基本思想是:每一趟从n-i+1 (i=1,2,…,n)个元素中选取一个关键字最小的元素作为有序序列中第i个元素.本节在介绍简单选择排序的基础上,给出了对其进行改进的算法堆排序. 1.简单选择排序 a:算法描述 简单选择排序的基本思想非常简单,即:第一趟,从n个元素中找出关键字最小的元素与第一个元素交换:第二趟,在从第二个元素开始的n-1个元素中再选出关键字最小的元素与第二个元素交换:如此,第k趟,则从第k个元素开始的n-k+1个元素中选出关键字最小的元素与第k个元素交换,直到整个序列按

数据结构与算法之排序(归纳总结四)

1.算法描述 归并排序的基本思想是基于合并操作,即合并两个已经有序的序列是容易的,不论这两个序列是顺序存储还是链式存储,合并操作都可以在Ο(m+n)时间内完成(假设两个有序表的长度分别为m和n).为此,由分治法的一般设计步骤得到归并排序的过程为: 1. 划分:将待排序的序列划分为大小相等(或大致相等)的两个子序列: 2. 治理:当子序列的规模大于1时,递归排序子序列,如果子序列规模为1则成为有序序列: 3. 组合:将两个有序的子序列合并为一个有序序列. 2.算法实现 归并的核心在于除了每个子列的

数据结构与算法之排序(归纳总结二)

交换类排序主要是通过两两比较待排元素的关键字,若发现与排序要求相逆,则“交换”之.在这类排序方法中最常见的是起泡排序和快速排序,其中快速排序是一种在实际应用中具有很好表现的算法. 1.冒泡排序 a.算法描述 起泡排序的思想非常简单.首先,将n个元素中的第一个和第二个进行比较,如果两个元素的位置为逆序,则交换两个元素的位置:进而比较第二个和第三个元素关键字,如此类推,直到比较第n-1个元素和第n个元素为止:上述过程描述了起泡排序的第一趟排序过程,在第一趟排序过程中,我们将关键字最大的元素通过交换操

数据结构与算法之排序(归纳总结一)

排序使我们实际开发中最常使用到的几个算法之一,按照如果按照排序过程中依据的原则对内部排序进行分类,则大致上可以分为插入排序.交换排序.选择排序.归并排序等排序方法.让我们首先看看插入排序的算法有哪些,以及他们的具体实现.插入排序的基本排序思想是:逐个考察每个待排序元素,将每一个新元素插入到前面已经排好序的序列中适当的位置上,使得新序列仍然是一个有序序列.在这一类排序中主要介绍三种排序方法:直接插入排序.折半插入排序和希尔排序. 1.直接插入排序 a.算法描述 直接插入排序是一种最简单的插入排序方

python 排序归纳

student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10)] print "1:",sorted(student_tuples, key=itemgetter(2))  ## 按第三个元素排序 print "2:",sorted(student_tuples, key=itemgetter(1,2)) ## 先按第二个元素,如相同,再按第三个元素排序 print "3:&q

算法常识——冒泡排序

前言 冒泡排序是一种通用的算法,凡是通用的,可以理解为效率不高,但是通用. code 从小到大的排序: static void Main(string[] args) { int[] intarr = new int[] {1,6,8,2,3,5,10,48,9 }; sort(intarr); foreach(var i in intarr) { Console.Write(i+"\n"); } Console.ReadKey(); } public static void sort

排序算法的归纳

o(n2) 冒泡排序:两两比较相邻记录的关键字,按小到大排序:从后到前,相邻两位都进行一次排序,每次循环都能把较小的数值往前推:优化部分做了一个标志,当不再进行位置互换时,利用flag直接结束. ps:取一位作为比较值与后面每一位数值进行比较,大则进行交换,这种排序很像冒泡排序,但严格意义上它并不算冒泡排序.只是简单的排序,因为这样做你会发现,每次循环都只是把当前最小值找到并往前排(交换),确并没有对其他数值的排序作出任何改变. function  bubbleSort(dataArray){

各种常见排序算法归纳总结

class sort_algorithm { public: int array[MAXN]; int n; public: sort_algorithm() { } ~sort_algorithm() { } /*插入排序 复杂度O(n^2) 稳定排序*/ void Insertion_sort() { for (int i = 2; i <= n; i++) { int key = array[i]; int j = i - 1; while (j >= 1 && arra

算法之经典排序算法小归纳

前言 数据结构和算法是写代码的基础.基本功很重要,所谓根基深度决定成长高度.以前没吃好的饭,总有一天要回来吃的.这段时间项目不忙,回来吃饭,决定花一段时间捋一捋数据结构和算法的基础知识. 正文     这篇博客简要总结了七个算法:冒泡排序,选择排序,插入排序,希尔排序,快速排序,归并排序和堆排序.本文所有的描述都是根据自己的理解手打的,为的是方便读懂,示例代码可以实现算法,但是不敢保证就是最优的.如描述内容有误,请指正. 好了开始吧.. 1.冒泡排序 从数组的一端开始两两比较,依次将当前最值移动