排序算法
旺仔OO糖
~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法三——插入排序
排序算法三:插入排序有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元原创 2017-08-08 09:55:05 · 625 阅读 · 0 评论 -
排序算法二——选择排序
**排序算法二:选择排序** **跟冒泡一样,选择排序同样是最简单,最常用的排序方法之一。 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]原创 2017-08-08 00:04:22 · 368 阅读 · 0 评论 -
排序算法四——希尔排序
**排序算法三:希尔排序(shell)**希尔排序本质上还是插入排序,只不过是在直接插入排序前做一些小动作,什么小动作呢?那就是通过分组,在每一组组内进行排序,排完序再合并在一起,经过若干次这样的“小动作”之后,这一组数字就是基本有序了,注意是基本有序,而不是排好序。(基本有序的意思就是最小的基本上在前面,大的基本在后面)为什么要让这一组数字基本有序呢?在直接插入排序的时候我给大家证明了插入排序是在原创 2017-08-08 15:58:03 · 530 阅读 · 0 评论 -
排序算法一——冒泡排序
排序方法一:冒泡排序 最简单,最常用的排序方法之一。冒泡排序是稳定的,相同的值的相对位置在排序后没有改变。时间复杂度O(n^2)。冒泡排序的代码及其改进版:/***************************************************** File name:1bubble.c Author: Tang Zhiqian Date:2017-08-07 1原创 2017-08-07 23:44:33 · 483 阅读 · 0 评论 -
排序算法五——堆排序
排序算法五:堆排序其实堆排序本质上也是选择排序,只不过选择的方法不一样。直接选择排序法是将第一个数字与后面所有数字比较,然后找到最大(或最小)的值,然后swap交换,这样第一个数字就是最大(或最小)的数字了。然后再将第二个数与剩下的所有数字比较,找到第二大(或第二小)的数字,然后交换。就这样依次选择下去,就排好序了。那么堆排序其实跟选择排序一样,每次把最大值(或最小值)找到,找的方式是通过构建“大顶原创 2017-08-09 21:02:58 · 442 阅读 · 0 评论 -
排序算法六——归并排序
**算法排序六:归并排序** 归并排序,很简单,就是写两个函数(函数1跟函数2),函数1是干嘛的呢?函数1的功能主要就是把传进来的一组数给他从中间分成两组,而函数2的功能就是把两组数字合并到一起并排好序。 看图: 比如这张图片上的这组数字,最左边是left,最右边是right。我从中间劈开,(mid就是(left + right)/2) 劈开之后,就是两组数了,左边那组数字left还是原原创 2017-08-10 10:52:39 · 660 阅读 · 0 评论 -
排序算法七——快速排序
排序算法七:快速排序快速排序的大致思想是:先随便选一个值,然后比这个值小的放在它左边,比它大的放在它右边。这样这组数字就被分成了两组, 然后再在左边那一组数字里面选一个值,比这个值大的放在它左边,比这个值大的放在它右边。就这样一直递归调用自己,到最后只剩一个值的时候,整组数都排好序了。 算法有两个函数,函数Quick_sort跟函数Partition, 函数Quick_sort主要用来递归调用自己原创 2017-08-10 16:11:56 · 584 阅读 · 0 评论
分享