【菜鸟入门】数据结构之5大排序

排序,是将一组任意排列的数据元素重新排列成一个按键值有序的序列的过程,一般以键值的比较和记录移动为标准操作。它是程序设计的基础,一个优秀的算法离不开切实情景的排序方法。

分类:

排序有两种:

内部排序(InternalSorting):待排序的记录全部存放在计算机内存中进行排序的过程

外部排序(ExternalSorting):指待排序记录的数量很大,以至于内存不能容纳全部记录,在排序过程中尚需外存进行访问的排序过程

我们通常所说的5大排序,是编程者运用到程序中的排序方法,一般也被认为是内部排序的分类

时间复杂度、空间复杂度、稳定性

在描述排序算法的同时,少不了时间复杂度、空间复杂度以及稳定性三方面的度量。

(1)时间复杂度:

最坏时间复杂度:指算法在所有输入下的计算量的最大值作为算法的计算量

平均时间复杂度:指算法在所有输入下的计算量的加权平均值作为算法的计算量

(2)空间复杂度:指一个算法除输入数据占存储空间之外所需要的附加存储空间的大小

(3)稳定性:在排序过程中相同的数据元素前后位置不变动,则是该排序算法是稳定的,否则称为不稳定

排序前3在3前边,排序后还在二者前后顺序不变,则称用到的排序方法是稳定的

小结:

排序算法是程序设计的重中之重。目前为止,排序方法远不止几种,人们热衷于研究各种排序方法,一是因为它在算法中占有非常重要的位置;二是各种算法各有优缺点,可根据需要运用到不同的场合。当然,这也是作为一名优秀程序员的必经之路

时间: 2024-10-16 13:38:58

【菜鸟入门】数据结构之5大排序的相关文章

【软考】数据结构之5大排序(一)

排序,是将一组随意排列的数据元素又一次排列成一个按键值有序的序列的过程,一般以键值的比較和记录移动为标准操作.排序是程序设计的基础.它往往是为检索服务的.一个优秀的算法离不开切实情景的排序方法. 1.分类: 排序有两种: 内部排序(InternalSorting):待排序的记录所有存放在计算机内存中进行排序的过程 外部排序(ExternalSorting):指待排序记录的数量非常大.以至于内存不能容纳所有记录.在排序过程中尚需外存进行訪问的排序过程 我们通常所说的5大排序,是编程者运用到程序中的

java实现 数据结构之8大排序

数据结构中8大排序(java方式实现)     *          * 冒泡排序         * 插入排序         * 选择排序         * shell排序         * 堆排序         * 归并排序         * 二叉树排序         * 快速排序     * 冒泡排序      private void bubblesort() {            int data [] = create();            print (dat

Bootstrap框架菜鸟入门教程

Bootstrap菜鸟入门教程 Bootstrap简介 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. 一.栅格系统 栅格系统的工作原理: "行(row)"必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中,以便为其赋予合适的排列(aligment)和内补(padding). 通过"行(ro

16. 蛤蟆的数据结构进阶十六排序实现之基数排序

16. 蛤蟆的数据结构进阶十六排序实现之基数排序 本篇名言:"社会犹如一条船 ,每人都要有掌舵的准备.--易卜生" 我们来看下基数排序. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47760601 1.  基数排序 基数排序(radix sort)属于"分配式排序"(distributionsort),又称"桶子法"(bucket sort)或bin sort,顾名思义,

15. 蛤蟆的数据结构进阶十五排序实现之堆排序

15. 蛤蟆的数据结构进阶十五排序实现之堆排序 本篇名言:"谁要是游戏人生 ,他就一事无成 ; 谁不能主宰自己 ,永远是一个奴隶.--歌德" 继续来看下堆排序. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47733553 1.  堆排序 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种.可以利用数组的特点快速定位指定索引的元素.堆分为大根堆和小根堆,是完全二叉树

九大排序算法总结

九大排序算法再总结 算法的由来:9世纪波斯数学家提出的:“al-Khowarizmi” 排序的定义: 输入:n个数:a1,a2,a3,...,an 输出:n个数的排列:a1',a2',a3',...,an',使得a1'<=a2'<=a3'<=...<=an'. In-place sort(不占用额外内存或占用常数的内存):插入排序.选择排序.冒泡排序.堆排序.快速排序. Out-place sort:归并排序.计数排序.基数排序.桶排序. 当需要对大量数据进行排序时,In-plac

18. 蛤蟆的数据结构进阶十八排序实现之快速排序

18. 蛤蟆的数据结构进阶十八排序实现之快速排序 本篇名言:"一个人做点好事并不难,难的是一辈子做好事,不做坏事.--毛泽东" 我们最后来看下快速排序,以及各个排序之间的一些信息汇总. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47817933 1.  快速排序 快速排序由C. A. R.Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分

《大话数据结构》学习笔记 排序

排序的严格定义:  假设含有n个记录的序列为{r1,r2,......,rn},对应的关键字分别为{k1,k2......,kn},需确定1,2,......,n的一种排列p1,p2,......,pn,使其相应的关键字 满足Kp1<=Kp2<=......Kpn关系,即使得序列成为一个按关键字有序的序列(rpq,rp2,......rpn),此操作称为排序.  排序的稳定性:内排序与外排序(根据记录是否全部放置在内存中). 根据排序中的主要操作,可以分为插入排序类(直接插入排序->希尔

九大排序算法Java实现

之前学习数据结构与算法时花了三天时间整理九大排序算法,并采用Java语言来实现,今天第一次写博客,刚好可以把这些东西从总结的文档中拿出来与大家分享一下,同时作为自己以后的备忘录. 1.排序算法时间复杂度.稳定性分类: 2.排序算法问题描述与实现 2.1冒泡排序(交换排序-稳定) [问题描述]对于一个int数组,请编写一个冒泡排序算法,对数组元素排序. 问题分析:冒泡排序,顾名思义,从前往后遍历,每次遍历在末尾固定一个最大值. 易错点:每次内层循环结束都会在末尾确定一个元素的位置,因此内层循环的判