![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
八大排序算法
数据结构八大排序算法,直接插入排序,希尔排序,冒泡排序,选择排序,快速排序、堆排序、归并排序、基数排序。
巴巴卡奥
嘿,从头开始,还来得及!!!
展开
-
八大排序-选择排序
选择排序选择排序在宏观上,可以看成是逆着进行排序,我们知道,冒泡排序,每进行一轮排序之后,数组中最大的元素会走到数组的最后一个位置,对于选择排序来说,每进行一次排序,数组中最小的元素都会走到第一个位置,所以。我们总共需要进行n-1轮排序。最后一个元素已经是最大的了不用再进行判断。1.每一轮排序时都让i指针所指的元素跟后边元素进行比较,2.如果i大于j所指的元素,就让i和j的值互换,3.始终保持i指针所指的是当前待排数组中最小的那个元素,4.一轮遍历完成之后,i当前所指的元素就是最小元素,此时i++原创 2021-08-17 00:52:28 · 94 阅读 · 0 评论 -
八大排序-希尔排序(shell)
希尔排序(shell)希尔排序实际上是属于对直接插入排序的一次优化,具体的流程为:1.每次都定义一个gap,将数组中的元素每gap个分为一组,2.然后通过对每一组的第j个元素进行直接插入排序,3.gap依次缩减,直到最终gap的值等于1,此时就相当于进行了直接插入排序,4.这样做的目的是为了让原本非常杂乱无序的数组变得相对有序,然后在使用直接插入排序效率就会高很多。代码实现如下://shellSortpublic static void shellSort(int[] array){ i原创 2021-08-17 00:14:13 · 85 阅读 · 0 评论 -
八大排序-冒泡排序
冒泡排序原理及代码实现(C++)冒泡排序算法的基本定义冒泡排序是数据结构课程中一种比较简单的排序算法,其重要的思想就是相邻数据的“两两交换”,实质上就是指从第一个元素开始,依次比较相邻元素的大小,将较大的元素放在后面,然后继续比较下一组元素的大小,重复上述的操作,直到没有数据可以进行比较。这样进行下来的操作称之为一轮操作,一轮操作结束后,这组数据中的最后一个元素便是这组数据中最大的元素。此后再次执行新的一轮排序,即从第一个元素开始,依次两两比较相邻两个元素的大小,将较大的元素向后移一位,重复该步骤,原创 2021-08-16 23:39:15 · 72 阅读 · 0 评论 -
八大排序-直接插入排序
直接插入排序直接插入排序算法的核心思想是:将一个数字往已经排好序的序列中找到合适的位置进行插入,重复该步骤。例如:一次一次每次指针i所指的位置标记为key,指针j指向前一个元素,也就是i-1位置,依次判断j的值和key的值,如果j的值比key大,则将j的值向后移,腾出空间,j–,直到找到一个可以将key值放下的位置,将此处的值赋值为key。代码实现如下: //insertSort public static void insertSort(int[] array){原创 2021-08-16 23:27:30 · 113 阅读 · 0 评论 -
排序-归并排序
归并排序 归并排序(Merge-Sort) 是建立在归并操作上的一种有效的排序算法,该算法是采用了分治法的一个典型应用。具体思想是: 将已经有序的子序列进行合并,从而得到完全有序的序列,即先使得每个子序列有序,在将子序列进行合并,保证合并后是有序的。上图中:1、首先对整个序列进行两两拆分,直到每个序列都只有一个数据,2、然后将子序列依次进行合并,合并的时候进行排序,从而保证合并后的序列都是有序的。3、重复上述步骤,直到所有的序列被合并为一个序列,这个序列就是归并排序后的序列。原创 2021-05-14 17:01:08 · 69 阅读 · 0 评论