| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构(几种排序) -> 正文阅读 |
|
[数据结构与算法]数据结构(几种排序) |
数据结构中排序的方法主要有6种:插入排序,希尔排序,冒泡排序,折半排序,快速排序和简单排序。下面我们对于6中排序方法来一一讲解。 结构准备
1.插入排序 以表L[n]为例来讲解。排序的方法是从表的头开始,当存在L[i]>L[i-1]时,我们又从第一个元素开始依次查找,当找到小于L[i-1]的元素L[k]时,将L[k]到L[i-1]的元素依次向前移动一位,最后将L[i]插入L[k]的位置。 从头开始,先让前面依次成递增排列,最后使整个表成递增排列。代码实现如下:
2.希尔排序 希尔排序主要是通过确定一个数d,将表中距离为d的数依次进行比较,如果有L[i]>L[i+d]的情况,将两个元素交换位置。然后在使用d=d/2继续进行该操作,在使用d/4继续进行该操作,直到d<0,最后使整个表成有序排列。排序完成。 希尔排序的特点是大量减少了空间复杂度,代码实现如下:
3.冒泡排序 冒泡排序的方法是在1~n中找到一个最大的数排在最后面,在从1~n-1中找到一个最大的数排到次后面,然后在从1~n-2中找到一个第三大树树放在第n-2个,依次从尾到头排成一个有序的表。主要的实现方法是从第一个元素开始,比较相邻的两个元素,如果大的数在前面,就将两个相邻的数互换。相当于最大的数想泡泡一样冒出到最后面,因此叫做冒泡排序。 冒泡排序的主要优点是时间复杂度低,运算较快,代码实现如下:
4.快速排序 快速排序的基本方法是将一个表通过两个“指针”同时分别从头到尾和从尾到头进行排序。最后将一个表排序完成。 首先选择一个基准,以基准为单位,分别从两端向中间扫描,知道两个“指针”相遇。将左边大于基准的数和右边小于基准的数互换。然后在两个“指针”相遇的位置分别在左右两边递归,知道将整个表全部成递增排列。 快速排序是所以排序中最快的排序方法,代码实现如下:
5.折半排序 折半排序是通过折半的方式查找元素的位置,然后将元素与该位置的元素互换。主要实现的方式是:从第一个元素开始向后查找,如果发现相邻的两个元素中前面的元素大于后面的元素(L[i]>L[i+1]),将前面的元素使用折半查找法找到小于L[i+1]的元素,然后将L[i+1]与该位置前面的元素互换。 代码实现如下:
6.简单排序 简单排序是从一个元素开始,在后面的元素中选择最小的元素与第一个元素相互赋值,直到最后一个元素。相当于先从1~n中选择一个最小的元素,若元素小于L[0],将L[0]与该元素相互赋值,将最小的元素排在第一位。然后通过同样的方式在2~n中选择一个最 小的元素放在第二位,直到将最大的元素排到最后一位,排序完成。 简单排序的特点是容易理解,也是生活中最简单的一种排序方法,代码实现如下:
简单排序和插入排序的区别是简单排序是通过交换元素值进行排序,而插入排序是通过交换元素的位置进行排序。 本人作为一名计算机的初学者,这是本人在CSDN上面发布的第一遍博客,欢迎大家前来指点修正,谢谢。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:48:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |