`

计算机数组排序常用方法介绍

 
阅读更多

      排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。

      内部排序和外部排序:

      若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序;反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。
内部排序的过程是一个逐步扩大记录的有序序列长度的过程。
内部排序的方法有许多种,按所用策略不同,可归纳为五类:插入排序、选择排序、交换排序、归并排序和分配排序。其中,插入排序主要包括直接插入排序和希尔排序两种;选择排序主要包括直接选择排序和堆排序;交换排序主要包括冒(气)泡排序和快速排序。

一、冒泡排序

      已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值, 否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比较a[3]与a[4],以此类推,最后比较a[n-1] 与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是 a[1]~a[n-1]中最大的。再对a[1]~a[n-2]以相同方法处理一轮,以此类推。共处理n-1轮后a[1]、a[2]、……a[n]就以升序 排列了。
优点:稳定,比较次数已知;
缺点:慢,每次只能移动相邻两个数据,移动数据的次数多。

二、选择排序

      已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值, 否则不变。再比较a[1]与a[3]的值,若a[1]大于a[3]则交换两者的值,否则不变。再比较a[1]与a[4],以此类推,最后比较a[1]与 a[n]的值。这样处理一轮后,a[1]的值一定是这组数据中最小的。再将a[2]与a[3]~a[n]以相同方法比较一轮,则a[2]的值一定是 a[2]~a[n]中最小的。再将a[3]与a[4]~a[n]以相同方法比较一轮,以此类推。共处理n-1轮后a[1]、a[2]、……a[n]就以升 序排列了。
优点:稳定,比较次数与冒泡排序一样;
缺点:相对之下还是慢。

三、插入排序

      已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、b[2]、……b[m],需将二者合并成一个升序数列。首先比较 b[1]与a[1]的值,若b[1]大于a[1],则跳过,比较b[1]与a[2]的值,若b[1]仍然大于a[2],则继续跳过,直到b[1]小于a数 组中某一数据a[x],则将a[x]~a[n]分别向后移动一位,将b[1]插入到原来a[x]的位置这就完成了b[1]的插入。b[2]~b[m]用相 同方法插入。(若无数组a,可将b[1]当作n=1的数组a)
优点:稳定,快;
缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候,但用链表可以解决这个问题。

四、缩小增量排序

     由希尔在1959年提出,又称希尔排序(shell排序)。
已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。发现当n不大时,插入排序的效果很好。首先取一增量d(d
优点:快,数据移动少;
缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取。

五、快速排序

      快速排序是冒泡排序的改进版,是目前已知的最快的排序方法。
已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先任取数据a[x]作为基准。比较a[x]与其它数据并排序,使a[x]排在数据的第k位,并且使a[1]~a[k-1]中的每一个数据a[x],然后采用分治的策略分别对a[1]~a[k-1]和a[k+1]~a[n]两组数据进行快速排序。
优点:极快,数据移动少;
缺点:不稳定。

六、箱排序

       已知一组无序正整数数据a[1]、a[2]、……a[n],需将其按升序排列。首先定义一个数组x[m],且m>=a[1]、a[2]、……a[n],接着循环n次,每次x[a]++.
优点:快,效率达到O(1)
缺点:数据范围必须为正整数并且比较小

分享到:
评论

相关推荐

    ZSB专升本计算机(共53,19-36)中 C语言的基础知识 常用算法 穷举法 递推法 数组元素 循环语 C语言习题

    26常用算法的应用-排序算法.mp4 27常用算法的应用-查找算法.mp4 28常用算法的应用-级数算法.mp4 29常用算法的应用-利用循环语.mp4 30常用算法的应用-整数各数位.mp4 31常用算法的应用-矩阵转置.mp4 32常用算法的应用...

    数组程序设计.docx

    1.3 必做实验 【题目4-1】运用所学数组知识实现学生成绩的录入、评估、统计、排序及输出,要求如下: (1)从键盘输入6个同学计算机课程期末考试成绩存放在数组中 算法分析: 1、定义一个能够存放6个整型数据的数组...

    计算机程序设计常用算法归纳.pdf

    1 《计算机程序设计》中常用算法复习 一、常用算法有 8 个方面: 1、递推算法(级数、数列求和、二分法、梯形法、穷举法 等) 2、排序算法(选择法排序、冒泡法) 3、查找算法(顺序查找 、折半查找、统计、求和、...

    计算机二级公共基础知识

    一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。 顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储...

    数据结构、机器学习、常用算法、经典案例、排序、加密算法.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    22春“计算机科学与技术”专业《计算方法》在线作业一答案参考5.docx

    22春"计算机科学与技术"专业《计算方法》在线作业答案参考 1. strcmp( )函数用来( )。 A.求字符串长度 B.比较字符 C.求子串 D.字符串拷贝 参考答案:B 2. 对一组数据(84,47,25,15,21)排序,数据的排列次序在排序...

    C++基础学习

    最后两章,介绍了计算机中常用的两种运算:查找和排序,详细介绍了不同的查找、排序运算及各种方法的效率分析。 《数据结构(C++描述)》中所有算法都在VC++ 6.0环境下运行通过。为了方便教学,《数据结构(C++描述)》...

    计算机软件水平考试软件设计师考试大纲与培训指南(2009版)

     常用的排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递归算法、图的相关算法  算法描述和分析 2.2.2 操作系统知识  操作系统的内核  处理机管理  存储管理  设备管理  文件管理  ...

    数据结构(C语言版)

    第8章和第9章主要讨论了查找和排序的各种实现方法及其综合分析比较。除第1章外,其余每章最后一节以实训的形式给出了本章重点算法的应用实例,以便于上机验证。 本书基本理论的阐述由浅入深、算法描述清晰、内容安排...

    22春“计算机科学与技术”专业《计算方法》在线作业含答案参考10.docx

    简单选择排序和冒泡排序都是一种不稳定排序方法。( ) A.错误 B.正确 参考答案:A 22春"计算机科学与技术"专业《计算方法》在线作业含答案参考10全文共4页,当前为第3页。17. 利用无穷递推过程的算法,只需要建立...

    javascript入门笔记

    4、1997年 网景 将Javascript 1.1 提供给了ECMA(欧洲计算机制造商联合会),ECMA 获取了 JS 的核心,称之为 ECMA Script (ES) 完整的JS组成: 1、核心(ES) 2、文档对象模型(Document Object Model) - DOM 允许让 ...

    java常用工具类的使用

    代码演示:数组排序 public static void sort(int[] arrs) { boolean isSwap = false; for (int i = 0; i ; i++) { isSwap = false; for (int j = arrs.length - 1; j > i; j--) { if (arrs[j - 1] > arrs[j]) ...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    1.7 简单的C程序介绍 1.8 输入和输出函数 1.9 C源程序的结构特点 1.10 书写程序时应遵循的规则 1.11 C语言的字符集 1.12 C语言词汇 1.13 Turbo C 2.0 集成开发环境的使用 1.13.1 Turbo C 2.0 简介和启动 1.13.2 ...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    1.7 简单的C程序介绍 1.8 输入和输出函数 1.9 C源程序的结构特点 1.10 书写程序时应遵循的规则 1.11 C语言的字符集 1.12 C语言词汇 1.13 Turbo C 2.0 集成开发环境的使用 1.13.1 Turbo C 2.0 简介和启动 1.13.2 ...

    数据结构王红梅

     《数据结构(C++版)(第2版)》介绍了数据结构、算法以及抽象数据类型的概念,介绍了线性表、栈、队列和串、数组、树和二叉树、图等常用数据结构,讨论了常用的查找、排序和索引技术,给出了较多的数据结构的应用...

    数据结构c++版

    《数据结构(C++版)》介绍了学习数据结构所用到的预备知识,叙述了数据结构、算法以及抽象数据类型的概念,介绍了线性表、栈、队列和串、数组和广义表,树和二叉树、图等常用数据结构,讨论了常用的查找、排序和索引技术,...

    C/C++常用算法手册.秦姣华(有详细书签).rar

    《C/C++常用算法手册》分3篇,共13章,“第1篇算法基础篇”介绍了算法概述,重点分析了数据结构和基本算法思想;“第2篇算法基本应用篇”详细讲解了算法在排序、查找、数值计算、数论、经典趣题和游戏中的应用;“第...

    C#全能速查宝典

    1.5.22 Sort方法——数组排序 121 1.5.23 Stack类——堆栈 123 第2章 Windows窗体及常用控件 126 2.1 Form窗体 126 2.1.1 AcceptButton属性——设置接受按钮 126 2.1.2 Activate事件——当激活窗体时发生 126 2.1.3...

Global site tag (gtag.js) - Google Analytics