Algorithm
算法
带只拖鞋去流浪
这个作者很懒,什么都没留下…
展开
-
计数排序(python)
计数排序(思想:分类)主要代码如下:#计数排序def countSort(markList): max = 0 #获取列表最大值 for value in markList: if value > max: max = value #定义新列表进行计数,长度为max+1(包括零) countList = ...原创 2020-02-21 10:37:53 · 217 阅读 · 0 评论 -
二分查找 / 折半查找(python)
二分查找(折半查找)(在下面分别例举了非递归与递归)一、 归纳总结其思想如下:有一个排好序的列表list,首端下标low = 0,末端下标 high = len(list) - 1在low <= high的条件下开始二分查找(循环):(1)取中间下标middle,那么middle = (low + high) // 2(2)如果middle对应的值正好等于查找的值,返回如果m...原创 2020-02-20 22:04:28 · 392 阅读 · 0 评论 -
快速排序(python)
【快速排序的思想】首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(low指向起始位置,high指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换low和high位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换low和high位置的值,如此往复循环,直到low>=hig...原创 2020-02-19 22:52:42 · 96 阅读 · 0 评论 -
归并排序(python)
【归并排序思想】分治的思想(递归)算法图示(https://visualgo.net/zh/sorting)# coding = utf-8import randomimport sys# 选择排序list = []# 随机生成列表def generate(): n = int(input("请输入本次排序数字个数:")) while n > 0: ...原创 2020-02-19 18:21:25 · 131 阅读 · 0 评论 -
插入排序(python)
【插入排序的思想】将第一个元素看作是一个有序的列表,从第二个元素开始将元素与有序部分中的元素比较找到合适的插入位置,将插入位置后的元素依次后移一个位置。# coding = utf-8import random# 选择排序list = []# 随机生成列表def generate(): n = int(input("请输入本次排序数字个数:")) while n &g...原创 2020-02-19 15:01:31 · 162 阅读 · 0 评论 -
选择排序(python)
【选择排序的思想】(对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),等到循环结束的时候,我们应该找到了最小的那个数的下标了,然后进行判断,如果这个元素的下标不是第一个元素的下标,就让第一个元素跟他...原创 2020-02-19 10:48:39 · 109 阅读 · 0 评论 -
冒泡排序(python)
冒泡排序算法的原理如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。# coding = utf-8import random# 冒泡排序list = []...原创 2020-02-18 21:55:53 · 138 阅读 · 0 评论 -
算法-001 欧几里得算法
[自然语言描述]计算两个非负整数p和q的最大公约数:若q是0,则最大公约数为p。否则,将p除以q得到余数r,p和q的最大公约数。[Java语言描述]public static int gcd(int p, int q) { if(q == 0) { return p; } int r = p % q; return gcd(q,r); }[习题1.1.24]...原创 2019-07-27 23:15:58 · 276 阅读 · 0 评论 -
算法-004 插入排序算法
/** *插入排序 */#include<stdio.h>void insert_sort(int a[],int N){ for(int i=1;i<N;i++){ int j=i-1,X=a[i]; for(;j>=0&&a[j]>X;j--) a[j+1]=a[j]; a[j+1]=X; }} main(){...原创 2019-07-31 14:47:17 · 101 阅读 · 0 评论 -
算法-003 冒泡排序算法
/** *冒泡排序 *平均时间复杂度O(n^2) */#include<stdio.h>#define ElemType intvoid swap(ElemType *a,ElemType *b){ ElemType temp; temp = *a; *a = *b; *b = temp;} void bubble_sort(ElemType a[],in...原创 2019-07-30 07:57:46 · 67 阅读 · 0 评论 -
算法-002 选择排序算法
/** *选择排序算法 *复杂度O(N^2) */#include<stdio.h>void swap(int *a,int *b){ int temp; temp = *a; *a = *b; *b = temp;}void select_sort(int a[],int n){ int i,j,min; for(i=0;i<n-1;i++){...原创 2019-07-29 19:14:26 · 71 阅读 · 0 评论