随笔分类 -  排序算法

摘要:python 二分查找算法 楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 你说,so easy! l.index(66 阅读全文
posted @ 2023-02-20 10:00 小学弟- 阅读(64) 评论(0) 推荐(0) 编辑
摘要:# 基数排序有着局限性,只能是整数,# 排序的时候要先排后面一个条件的(多条件排序)#如本例中,先从个位开始排起# 多关键字排序# 从低关键字开始排序 # @File: radix_sort ############################################## # def get_digit(num, i): # 获取整数第i位数字 # # return n... 阅读全文
posted @ 2018-12-24 15:53 小学弟- 阅读(203) 评论(0) 推荐(0) 编辑
摘要:计数排序有局限性,最小值和最大值决定着数组的长度,如果分配均匀的话可以用 # @File: count_sort import random def count_sort(li, max_num=100): count = [0 for i in range(max_num + 1)] for val in li: count[val] += 1 l... 阅读全文
posted @ 2018-12-24 09:48 小学弟- 阅读(268) 评论(0) 推荐(0) 编辑
摘要:与插入排序的思想一致,插入排序是一个,希尔排序是多个插入排序! # @File: shell_sort import random def insert_sort_gap(li, d): for i in range(d, len(li)): j = i - d temp = li[i] while j >= 0 and li[j] ... 阅读全文
posted @ 2018-12-24 09:34 小学弟- 阅读(134) 评论(0) 推荐(0) 编辑
摘要:# 构建小顶堆跳转def sift(li, low, higt): tmp = li[low] i = low j = 2 * i + 1 while j li[j]: li[i] = li[j] i = j j = 2 * i + 1 else: ... 阅读全文
posted @ 2018-12-18 15:13 小学弟- 阅读(2622) 评论(0) 推荐(0) 编辑
摘要:import random from timewrap import cal_time # 一个计算时间的装饰器 def merge(li, low, mid, high): i = low j = mid + 1 li_tmp = [] while i <= mid and j <= high: if li[i] <= li[j]: ... 阅读全文
posted @ 2018-12-15 18:03 小学弟- 阅读(175) 评论(0) 推荐(0) 编辑
摘要:python自带模块 阅读全文
posted @ 2018-12-15 17:59 小学弟- 阅读(211) 评论(0) 推荐(0) 编辑
摘要:归并排序也是一种常用的排序算法, 其时间复杂度为O(n*logn), 它的基础是分治的思想。 其基本思路就是把数组分成两组A,B, 如果这两组内的数据都是有序的, 那么就可以很方便的对这两组数据进行合并排序。 但是如何让这两组数据有序呢? 归并法的思想就是把A,B两组各自再分成两组, 依次类推, 当分出来的小组数据只有一个的时候, 即可以认为小组数据已经达到了有序。 然和合并相邻的两个小组就OK... 阅读全文
posted @ 2018-08-10 14:36 小学弟- 阅读(96) 评论(0) 推荐(0) 编辑
摘要:#堆排序升序: #include #include #include using namespace std; #define parent(i) (i)/2 #define left(i) 2*(i) #define right(i) 2*(i)+1 int size; void heapify(int a[], int i) { int l = left(i), r = ... 阅读全文
posted @ 2018-08-10 14:35 小学弟- 阅读(77) 评论(0) 推荐(0) 编辑
摘要:#include int a[101],n;//定义全局变量,这两个变量需要在子函数中使用 void quicksort(int left,int right) { int i,j,t,temp; if(left>right) return; temp=a[left]; //temp中存的就是基准数 i=left; j=righ... 阅读全文
posted @ 2018-08-10 14:34 小学弟- 阅读(114) 评论(0) 推荐(0) 编辑
摘要:#include #include "cstring" #include "string" using namespace std; const int L=10000; int main(){ int i,n,a[L],num[L+1],Size; int T; cin>>T; while (T--) { cin>>n; ... 阅读全文
posted @ 2018-08-10 14:31 小学弟- 阅读(93) 评论(0) 推荐(0) 编辑
摘要:from random import Random def quick_sort(arr): if len(arr) > 1: qsort(arr, 0, len(arr) - 1) def qsort(arr, start, end): base = arr[start] pl = start pr = end whi... 阅读全文
posted @ 2018-07-16 18:16 小学弟- 阅读(185) 评论(0) 推荐(0) 编辑
摘要:l = [1, 4, 5, 2, 9, 7, 3] for i in range(len(l)-1): for j in range(len(l)-1-i): #我们每循环一次都会将最大的数推到最右边,所以需要将最右边排好的数拿走 if l[j] > l[j+1]:#前一个数与后一个数依次比较,直到将最大的数推到右边 l[j], l[j+1] = ... 阅读全文
posted @ 2018-07-10 21:08 小学弟- 阅读(273) 评论(0) 推荐(1) 编辑
摘要:list_1 = [] #先建一个空链表 print('输入排序个数:') n = int(input()) #接收输入个数 for i in range(n): a = input() list_1.append(a) #将这n个数都存入链表 Lenth = len(list_1) for i in range(Lenth - 1): Min = ... 阅读全文
posted @ 2018-02-03 19:18 小学弟- 阅读(160) 评论(0) 推荐(0) 编辑
摘要:import randomdef insert_sort(li): for i in range(1, len(li)): j = i - 1 tmp = li[i] while j >= 0 and li[j] > tmp: li[j+1] = li[j] j -= 1 li... 阅读全文
posted @ 2018-02-03 13:14 小学弟- 阅读(98) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示