04 2022 档案

摘要:基数算法的思路是数组中的元素无论是几位数,但是每一位都不可能超过0-9的范围,所以通过循环判断每一位属于0-9的哪一个.将其放入对应的栈中,一次循环下来,确定了个位数的排序.如果是两个元素在同一个栈中那取出的顺序是先进先出.第二次循环确定十位的位置 第三次是百位以此类推.这里需要注意的是最大的循环次 阅读全文
posted @ 2022-04-23 22:59 顶风少年 阅读(197) 评论(0) 推荐(0) 编辑
摘要:快速随机排序的思路是从一个数组中随机选择一个主元,然后将这个主元放到数组的最后.循环数组时,先定义一个指针,发现了比主元小的元素,如果指针和循环下标相同 则只是把指针自增,如果发现循环下标不同则将循环下标与指针位置交换,这样做的目的是始终保证指针左边的元素小于主元,最后循环结束将主元与指针位置交换. 阅读全文
posted @ 2022-04-21 22:47 顶风少年 阅读(195) 评论(0) 推荐(0) 编辑
摘要:希尔排序是插入排序的优化版本.插入排序的思路是每次跟前一个比较,需要交换则交换,然后指针向后移动,再次与前面的比较,如果不需要交换则表示前边的前边也不需要交换. 希尔排序则是通过添加一个步长的概念,每次把当前元素与增加步长后的元素比较,如果交换则交换.然后再次增加步长去比较,这个过程与插入排序一样. 阅读全文
posted @ 2022-04-17 21:28 顶风少年 阅读(37) 评论(0) 推荐(0) 编辑
摘要:上一篇说了冒泡排序,这次说选择排序.选择排序与冒泡排序十分相似.冒泡排序是每一轮中的每一次都讲最小值交换.而选择排序是将每一轮中最小的值记录下标记录下来,一轮过后只交换一次,从空间上来说比冒泡排序好. 但是从时间复杂度来说是一样的.此算法的时间复杂度为O(n^2) public static voi 阅读全文
posted @ 2022-04-17 16:22 顶风少年 阅读(23) 评论(0) 推荐(0) 编辑
摘要:冒泡排序是最好理解的排序方式,从第二个元素开始循环如果比第一个元素小则交换位置,继续向后冒泡,一圈下来确定了下标位置0是最小的元素.以此类推.此算法的时间复杂度为O(n^2) public static int[] maopao(int[] arr) { for (int i = 0; i < ar 阅读全文
posted @ 2022-04-14 22:01 顶风少年 阅读(35) 评论(0) 推荐(0) 编辑
摘要:线性查找 在一个无顺序的数组中找到第k大的元素是几. 这个问题最简单的解法是先将数组进行排序,然后返回下标k上的元素.如果使用上一节的归并排序则时间复杂度是O(nlogn) 那是否有更好的思路呢.同样我们还是使用分治策略,先从数组中找到一个合适的主元,围绕这个主元划分子数组.比主元小的 划分到左边, 阅读全文
posted @ 2022-04-11 22:37 顶风少年 阅读(50) 评论(0) 推荐(0) 编辑
摘要:插入排序 插入排序举个最好的例子就是扑克牌,当我们手里拿了N张无序的牌,如果要对牌进行排序,最好的思路是从第二张开始,我们设置这个为i,让它和前边的牌做比较如果需要换位置就换,换了以后继续往前在看需不需要换。如果i-x牌不需要和i交换 则终止,然后i向后移动,直到手里的扑克牌到最后一张也跟前边的依次 阅读全文
posted @ 2022-04-08 17:15 顶风少年 阅读(196) 评论(0) 推荐(0) 编辑

返回顶部
点击右上角即可分享
微信分享提示