数据结构排序
详细分析各种不同的排序算法的优缺点
沉睡的关耳
这个作者很懒,什么都没留下…
展开
-
数据结构算法之 六 桶排序
今儿我们来聊一聊 桶排序, 顾名思义就是把元素放到桶里面排序,桶排序是一个不需要比较的排序算法,所以对排序的元素是有限定的。桶排序的原理:元素必须是正整数! 定义0-9的10个数组(桶),将所有元素依次从个位数开始放到每个对应的数组(桶)中,按照先进先出的方式重新整合,再依次从十位的数字放到对应的桶中,位数不够的元素补零,依次遍历到最大数的位数。看动态图来理解一下吧...原创 2021-08-17 08:51:54 · 178 阅读 · 0 评论 -
数据结构算法之 五 堆排序
上一章归并排序,不知道老铁们细品其性能和排序思想了没有。原创 2021-08-10 09:12:20 · 132 阅读 · 0 评论 -
数据结构算法之 四 归并排序
今儿来聊一聊归并排序, 其实跟快速排序的思想很接近, 但是实现的过程又大不相同 ,在此之前,我们先了解一下 怎么把两个有序的集合 合并在一起 ,可能很多同学在面试过程中 ,会遇到面试题 。那我们来看看 如何实现最优解:1.重排序法: 就是将两个集合放到一个数组里面,再进行排序。 这种方法是最笨的方法了,完全体现不了 两个集合有序的特性 。2.从头比较法: 先取得两个集合的第一个元素,比较小的放到另外一个集合了,然后小的集合的第二个元素再进行比较,以此类推比较完毕放到另外一个集合中 。 做个图 比较.原创 2021-08-03 10:35:33 · 674 阅读 · 0 评论 -
数据结构算法之 三 快速排序
今儿来聊一聊 快速排序, 面试中最常提到的就是 冒泡和快排了 , 冒泡还不了解的同学 可以先去补一下冒泡排序的知识。 可能有其他的文章说 快排的时间复杂度是O(N^2),我个人觉得并不完全对 。因为0-100之间取随机数不可能永远取的是100吧! 记住这句话,最后你会明白是啥意思了。快排有三种方式:一、快排1 : 原理:取集合的第一个元素为中节点,将集合剩下的所有元素跟中节点对比,小的放左边 比之大的 放右边,然后把分配好的 左右两个集合再分别取第一个元素为中节点,再进行比较放...原创 2021-07-31 09:40:20 · 400 阅读 · 0 评论 -
数据结构算法之 二 【选择排序与插入排序】
老铁们,今天我们来聊一聊选择排序和插入排序 ,其实这两种排序的时间复杂度和冒泡排序是一样的 ,都是 O(N^2) ,三者的区别只是比较元素的顺序不同而已 。一、选择排序 原理:从数组中找到最小的元素 与第一个元素替换。再从第二个元素开始找到最小的元素和第二个元素替换,以此类推,到 N-1个元素位置,来上码吧。void selectsort(){ int arr[] = {8, 21, 563, 63, 456, 5, 70, 2, 4, 76, 54, 2, 1, 3}; ..原创 2021-07-27 09:29:58 · 155 阅读 · 0 评论 -
数据结构算法之 二 【冒泡排序】
今天我们来聊一聊冒泡排序, 再说实现过程之前 ,我们了解一下排序的概念, 就是把一个无序的数据集合 变成我们想要的顺序 。举个栗子: 我们工作中需要把一个无序的数组[5,6,1,3,4,8,7] 变成 [1,3,4,5,6,7,8] 这样一个有序的数组。...原创 2021-07-26 09:40:39 · 138 阅读 · 0 评论 -
数据结构算法之 初识 时间复杂度和空间复杂度(一)
很多同学听到数据结构和算法的时候,可能第一感觉会胆怯, 之所以出现这种错误,是因为在平常工作中 没有经常去用到 ,虽然我们都不是第一个吃螃蟹的人,但我们不要成为最后一个吃螃蟹!!(ps:因为螃蟹是真香哈!) 话不多说了....直接开干吧! 首先我们从字面意思思考一下 时间复杂度 和空间复杂度。顾名思义:时间复杂度就是 一段代码 运行需要耗费的时间, 空间复杂度就是一段代码运行需要耗费的空间!时间复杂度: 我们这里说的耗费的时间 不是说需要多少秒,而是指我们需要处理N个数,需要处理多...原创 2021-07-21 09:43:43 · 93 阅读 · 0 评论