![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 77
由浅入深学习算法知识并分享给大家
IT阿剂
万物皆有裂缝,因为那是光照进来的地方。
展开
-
冒泡排序——python实现
python实现冒泡排序代码#python2def bubble(bubbleList): listLength = len(bubbleList) while listLength > 0: for i in range(listLength - 1): if bubbleList[i] > bubbleList[i+1]: bubbleList[i], bubbleList[i+1] = bubb原创 2020-08-28 15:22:13 · 1025 阅读 · 0 评论 -
冒泡排序——JS实现
js实现冒泡排序代码:function bubbleSort(arr) { var i = arr.length, j; var tempExchangVal; while (i > 0) { for (j = 0; j < i - 1; j++) { if (arr[j] > arr[j + 1]) { tempExchangVal = arr[j]; a原创 2020-08-28 15:19:48 · 1032 阅读 · 1 评论 -
折半插入排序——golang实现
go语言实现折半插入排序func HalfInsertSort(a []int){//折半插入 var j,low,high int for i := 1;i<len(a);i++ { a[0] = a[i] low = 1 high = i-1 for low <= high { //在a[1:i-1]中折半查找插入的位置 mid := (low+high)/2 if a[0] < a[mid] { high = mid-1 }el原创 2020-08-28 15:09:14 · 332 阅读 · 0 评论 -
折半插入排序——python实现
python实现折半插入排序代码:def BinaryInsertSort(list): for i in range(2,len(list)): list[0]=list[i] low=1 high=i-1 while low<=high: m=(low+high)/2 #折半 if list[0]<list[m]: #插入点在低半区原创 2020-08-28 15:07:03 · 2160 阅读 · 0 评论 -
折半插入排序——JS实现
js实现折半插入排序代码: var arr = [49, 38, 65, 97, 76, 13, 27, 49]; console.log('arr:' + arr); binaryInsertionSort(arr); console.log('sortArr:' + arr); function binaryInsertionSort(arr){ for(var i=1;i<arr.length;i++){ //第一个数不需要排,其他原创 2020-08-28 15:04:55 · 262 阅读 · 2 评论 -
直接插入排序——golang实现
go语言实现直接插入排序package mainimport( "container/list" "fmt")var old []int = []int{432,432432,4234,333,333,21,22,3,30,8,20,2,7,9,50,80,1,4}func main(){ fmt.Println("old array:",old) res,_ := InsertionSort(old) i := 0 for e := res.Front(); nil != e原创 2020-08-28 14:33:43 · 114 阅读 · 0 评论 -
直接插入排序——JS实现
直接插入排序的JS代码实现function straight (a){ var newArr = []; var first = a[0]; var len = a.length; newArr.push(first); for(var i = 1;i<len;i++){ var newLen = newArr.length; var b = true; for(var j = 0;j<newLen;j原创 2020-08-28 14:25:51 · 148 阅读 · 1 评论 -
直接插入排序——python实现
直接插入排序的python代码实现:#!/usr/bin/env python3# coding = utf-8 # 适合初学者版:def InsertSort(list): n = len(list) for i in range(1, n): j = i while j > 0: if list[j] < list[j - 1]: list[j - 1], list[j]原创 2020-08-28 14:18:15 · 1680 阅读 · 0 评论 -
希尔排序——JS实现
希尔排序使用JS实现代码:let dat=[5, 8, 10, 3, 2, 18, 17, 9];function insertSort(data) { var gap=Math.floor(data.length/2); var temp;//用于存储需要插入的数据 //注意i从gap开始,因为以data[0]为基准数,j=i-1 while(gap>=1){ for(let i=gap;i<data.length;i++){ .原创 2020-08-28 11:04:08 · 675 阅读 · 1 评论 -
快速排序之golang实现
关于快速排序的讲解在本人博文快速排序详解中,这里只展示golang的代码实现:package mainimport "fmt"func quickSort(arr []int, start, end int) { if start < end { i, j := start, end key := arr[(start+end)/2] for i <= j { for arr[i] < key {原创 2020-08-28 10:48:34 · 1397 阅读 · 0 评论 -
简单选择排序——Golang实现
简单选择排序:通过n-i次关键词间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1in)个记录交换之。package mainimport "fmt"func main() { arr := []int{6, 2, 4, 8, 9, 1, 4, 0, 10, 5, 2} selectionSort(arr, 0) fmt.Println(arr)}/**选择排序法:在未排序的切片中选取最小的值放在首位,然后在未排序的切片中选取最小的值放在第二位,以此类推。。。...原创 2020-07-31 16:43:46 · 2140 阅读 · 0 评论 -
简单选择排序——python实现
简单选择排序:通过n-i次关键词间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1in)个记录交换之。def selectionSort(alist): for i in range(len(alist)-1,0,-1): maxone = 0 for j in range(1,i+1): if alist[j]>alist[maxone]: maxone = j temp = alist[i] alist[i]..原创 2020-07-31 16:39:40 · 150 阅读 · 1 评论 -
简单选择排序——JS实现
简单选择排序:通过n-i次关键词间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1in)个记录交换之。function select_sort(arr) { var k; var temp; var l=arr.length; for (var i = 0; i < l-1; i++) { k=i; for (var j = i+1; j < l; j++) { if (arr[j]<arr[k]) { k=.原创 2020-07-31 16:35:05 · 139 阅读 · 0 评论 -
常见排序算法及其对应的时间复杂度和空间复杂度
排序算法经过长时间演变,大体可以分为两类:内排序和外排序。在排序过程中,全部记录存放在内存,则成为内排序;如果排序过程中需要使用外存,则称为外排序,本文讲的都属于内排序。内排序有可以分为以下几类: (1)插入排序:直接插入排序、二分法插入排序、希尔排序 (2)选择排序:直接选择排序、堆排序 (3)交换排序:冒泡排序、快速排序 (4)归并排序 (5)基数排序排序方法 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) ...原创 2020-07-31 16:27:00 · 3374 阅读 · 2 评论 -
快速排序之JS实现
关于快速排序的讲解在本人博文快速排序详解中,本门只展示JS的代码实现:const quickSort = (array) => { const sort = (arr, left = 0, right = arr.length - 1) => { if (left >= right) {//如果左边的索引大于等于右边的索引说明整理完毕 return } let i = left let j = right const baseVal = arr[j] // 取无原创 2020-07-30 11:56:58 · 2123 阅读 · 2 评论 -
快速排序之Python实现
关于快速排序的讲解在本人博文快速排序详解中,本门只展示python的代码实现:def quick_sort(data): """快速排序""" if len(data) >= 2: # 递归入口及出口 mid = data[len(data)//2] # 选取基准值,也可以选取第一个或最后一个元素 left, right = [], [] # 定义基准值左右两侧的列表原创 2020-07-30 11:55:36 · 105 阅读 · 1 评论 -
算法快速排序详解(代码PHP实现)
快速排序(Quicksort)是对冒泡排序的一种改进快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。排序流程快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组.原创 2020-07-30 11:49:37 · 662 阅读 · 2 评论 -
算法交换类排序之冒泡排序及优化详解(PHP代码实现)
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。算法原理: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。原创 2020-07-23 19:06:18 · 1276 阅读 · 2 评论 -
算法插入排序之希尔入排序详解(python代码实现)
关于希尔排序的知识点讲解在我的博客算法分类中算法插入排序之折半插入排序详解(PHP代码实现)这里就不再重复讲解了,这里主要为python语言实现其算法。def shell(lis): n = len(lis) gap = int(n / 2) while gap > 0: for i in range(gap, n): temp = lis[i] j = i - gap while原创 2020-07-22 20:42:46 · 273 阅读 · 1 评论 -
算法插入排序之希尔入排序详解(Golang代码实现)
关于希尔排序的知识点讲解在我的博客算法分类中算法插入排序之折半插入排序详解(PHP代码实现)这里就不再重复讲解了,这里主要为go语言实现其算法。func ShellSort(nums []int) []int{ //外层步长控制 for step := len(nums) / 2; step > 0; step /= 2 { //开始插入排序 for i := step; i < len(nums); i+=step { .原创 2020-07-22 20:39:54 · 7471 阅读 · 2 评论 -
算法插入排序之希尔排序详解(PHP代码实现)
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率...原创 2020-07-22 20:34:22 · 337 阅读 · 2 评论 -
算法插入排序之折半插入排序详解(PHP代码实现)
折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。基本操作:在将一个新元素插入已排好序的数组的过程中,寻找插入点时,将待插入区域的首元素设置为a[low],末元素设置为a[high],则轮比较时将待插入元素与a[m],其中m=(low+high)/2相比较,如果比参考元素小,则选择a[.原创 2020-07-21 18:59:49 · 328 阅读 · 2 评论 -
算法插入排序之直接插入排序详解(PHP代码实现)
直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。直接插入排序的思想:每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。直接插入排序引入了哨兵,设置监视哨是为了在查找插入位置的过程中避免数组下标出界。直接插入排序的过程图:直接插入排序的效率: 从空间上看,它只需要一个记录的辅助空间。...原创 2020-07-15 16:13:15 · 529 阅读 · 4 评论