算法与数据结构
你所有承诺
这个作者很懒,什么都没留下…
展开
-
算法集锦【全】
插入排序算法冒泡排序算法快速排序算法选择排序算法归并排序算法桶排序算法鸽巢排序讲解基数排序算法地精排序算法奇偶数排序算法希尔排序算法讲解耐心排序详解梳排序算法讲解鸡尾酒排序讲解计数排序算法讲解...原创 2018-10-16 07:40:13 · 1043 阅读 · 0 评论 -
python实现奇偶排序算法
前面我们讲解了奇偶排序算法,现在我们用python代码来实现下#!/usr/bin/python# -*- coding: utf-8 -*-#奇偶排序def odd_even_sort(the_list): odd_flag = False even_flag = False while( (not odd_flag) or (not even_flag))...原创 2018-09-15 16:30:22 · 3033 阅读 · 1 评论 -
奇偶数排序算法讲解
算法看多了也脑袋疼,这不,奇偶算法,这名字怪怪的,也不知道哪位大神想出来的这个算法看名字大概也知道,排序跟奇偶位数有关,嗯,你猜到了重点奇偶排序是这样的,先奇数位和它右侧的数据进行排序,然后偶数位和它右侧的数据进行排序,从而得到最终结果我们来举个例子,有数组[10, 12, 7, 5]先选偶位还是先选奇位,看你的代码了①我们选择偶数位 10 710和它右边的12比,嗯,...原创 2018-09-15 08:42:34 · 5595 阅读 · 1 评论 -
go实现地精排序算法
前面我们详细的讲解了地精排序算法,现在我们用go语言来实现下package mainimport "fmt"//地精排序func gnomeSort(theArray []int) []int { i := 0 for i<len(theArray){ if i==0 || theArray[i-1] <= theArray[i]{ i++ }else...原创 2018-09-13 21:56:13 · 243 阅读 · 0 评论 -
python实现地精排序算法
前面我们详细的讲解了地精排序算法,现在我们使用python代码来实现#!/usr/bin/python# -*- coding: utf-8 -*-#地精排序def gnome_sort(the_list): i = 0 while i <len(the_list): if i==0 or the_list[i-1] <= the_list...原创 2018-09-13 21:53:02 · 329 阅读 · 0 评论 -
java实现地精排序算法
前面我们详细的讲解了地精排序算法,现在我们用java代码来实现一下,直接上代码package ttt;public class GnomeSort { public static int[] BubbleSort(int[] theArray) { int temp; int i = 0; while(i < theArray.length) ...原创 2018-09-13 21:50:54 · 443 阅读 · 0 评论 -
地精排序算法讲解
地精,这个名字我也很意外,好吧,可能是翻译的问题吧,我们不要过多纠结和冒泡比较像,数字往前冒,一旦遇到比小的,则互换位置,往回冒,然后继续往前冒举个例子10, 12, 7, 5先取10,这时候下标为0,不比较,下标0=》1取12,12跟10比,12比10大,保持原型,下标1=》2取7,7和前面的数12比,7比12小,互换位置,得到[10, 7, 12, 5],下标2=》1...原创 2018-09-13 21:47:38 · 616 阅读 · 0 评论 -
go实现耐心排序算法
前面我们讲解了耐心排序算法,今天我们来看一下代码的实现,直接上代码package mainimport ( "fmt")//耐心排序func patienceSort(theArray[] int)[]int { newList := make([][]int, 0) for i := 0; i < len(theArray); i++ { ...原创 2018-09-19 00:37:28 · 361 阅读 · 0 评论 -
python实现耐心排序算法
前面我们讲解了耐心排序算法,今天我们来看一下代码的实现,直接上代码#!/usr/bin/python# -*- coding: utf-8 -*-#耐心排序def _patience_sort(the_list): the_list_len = len(the_list) if the_list_len <2:#0和1 print "无需排序" ...原创 2018-09-19 00:35:56 · 432 阅读 · 0 评论 -
java实现耐心排序
前面我们讲解了耐心排序算法,今天我们来看一下代码的实现,直接上代码package ttt;import java.util.ArrayList;import java.util.List;public class PatienceSort { public static int[] patienceSort(int[] theArray) { List new_l...原创 2018-09-19 00:33:28 · 536 阅读 · 1 评论 -
耐心排序详解
嗯,看名字挺有耐心的,耐心排序充分集合了桶排序和插入排序的优点首先使用桶排序,排序之后每个桶中数据相对有序,这样再使用插入排序,简化了问题,速度变的更快我们通过例子来讲解下,假设我们有数组[6 4 5 1 8 7 2 3]第一步:因为此前还没有桶,则建立一个桶,我们命名为桶1,从上面取出第一个数字 6,然后将6放入到桶中第二步:我们使用第二个值4,然后遍历现有的桶,遍历的工程中先遇...原创 2018-09-19 00:30:59 · 1589 阅读 · 1 评论 -
go实现基数排序算法
前面我们详细讲解了基数排序算法,现在我们使用代码来实现,直接上代码,go代码如下package mainimport ( "fmt" "math")//基数排序func radixSort(theArray []int)[]int { //获取最大值vl vl := 0; for _,v:=range theArray{ if v>vl{ vl = v ...原创 2018-09-11 00:10:49 · 977 阅读 · 1 评论 -
java实现基数排序算法
前面我们详细讲解了基数排序算法,现在我们使用代码来实现,直接上代码,java代码如下我们先要做的就是求数组中最大值,然后算出最大值得位数,这样才能判别需要循环几次package ttt;import java.util.Arrays;public class RadixSort { public static int getMax(int[] theArray) { //获...原创 2018-09-11 00:08:57 · 1294 阅读 · 1 评论 -
python实现基数排序
前面我们详细讲解了基数排序算法,现在我们使用代码来实现,直接上代码,python代码如下#!/usr/bin/python# -*- coding: utf-8 -*-import math#基数排序def radix_sort(the_list,radix=10): # print math.log(max(the_list), radix) # print ma...原创 2018-09-11 00:06:24 · 1178 阅读 · 0 评论 -
计数排序算法讲解
前面我讲解了一个基数排序算法,这地方要说一下哈,同音不同字,不要弄混淆了今天我们讲的这个算法呢,这,这,这,又一个看名字就能看出来一点道道的,的确,计数算法就是给每个元素计一些数,通过一些数来对元素进行比较和排序,我们来看个例子有数组【6, 4, 5, 1, 8, 7, 2, 3】,同理我们建立一个长度为6的空数组我们先取出第一个元素6,然后看看整个数组中有多少个比6小的,嗯,我们发现...原创 2018-09-25 23:41:39 · 870 阅读 · 1 评论 -
java实现计数排序算法
前面我们详细讲解了计数排序算法,今天我们用代码来实现package ttt;public class CountingSort { public static int[] countingSort(int[] theArray) { int[] lastArray = new int[theArray.length]; for(int i = 0; i ...原创 2018-09-26 00:05:09 · 840 阅读 · 1 评论 -
python实现计数排序算法
前面我们详细讲解了计数排序算法,今天我们用代码来实现#!/usr/bin/python# -*- coding: utf-8 -*-#计数排序def _counting_sort(the_list): the_len = len(the_list) if the_len <2:#0和1 print "无需排序" return the...原创 2018-09-26 00:05:24 · 907 阅读 · 2 评论 -
go实现归并排序算法
前面我们讲了归并排序算法,接下来我们来讲讲go的代码实现呗,如下package mainimport "fmt"//合并排序func lastMergeSort(list1 []int, list2 []int) []int{ i, j := 0,0 //temp := make([]int,0) var temp[]int for i < len(list1) &...原创 2018-09-29 07:39:14 · 693 阅读 · 0 评论 -
java实现归并排序算法
前面我们讲了归并排序算法,接下来我们来用java代码实现呗,如下package ttt;import java.util.Arrays;public class MergeSort { public static int[] lastMergeSort(int[] list1,int[] list2) { int i = 0, j = 0, k = 0; int...原创 2018-09-29 07:37:26 · 2236 阅读 · 0 评论 -
python实现归并排序算法
前面我们讲了归并排序算法,接下来我们来python代码实现呗,如下#!/usr/bin/python# -*- coding: utf-8 -*-#归并排序def _last_merge_sort(list1, list2): i, j = (0, 0) temp = [] while i < len(list1) and j <len(list2...原创 2018-09-29 07:37:22 · 630 阅读 · 0 评论 -
归并排序算法讲解
归并排序算法是一款十分高效的算法,因为用到了二叉树的特性,我们知道能使用二叉树特性的排序都比较高效,我们详细讲解一下比如有两个已经排好的数组([5,7],[2,6,10]),这个需要我们进行合并排序,我们改如何排呢①首先取出第一个数组第一个元素:5,第二个数组第一个元素:2,我们得到最小值2,放入到第三个数组c中,此时c是[2]②因为第一个数组第一个元素还没有被拿走,所以第二步我们取出...原创 2018-09-28 23:26:19 · 1151 阅读 · 0 评论 -
go实现鸡尾酒排序算法
前面我们讲解了鸡尾酒排序,今天我们来用代码实现下package mainimport "fmt"//鸡尾酒排序func cocktailSort(theArray[] int)[]int{ theLen := len(theArray) for true{ flag := false for i := 0; i < theLen-1; i++ { if(th...原创 2018-09-22 00:03:33 · 343 阅读 · 0 评论 -
python实现鸡尾酒排序算法
前面我们讲解了鸡尾酒排序,今天我们来用代码实现下#!/usr/bin/python# -*- coding: utf-8 -*-#鸡尾酒排序def _cocktail_sort(the_list): the_len = len(the_list) if the_len <2:#0和1 print "无需排序" return the_...原创 2018-09-22 00:01:55 · 1274 阅读 · 0 评论 -
java实现鸡尾酒排序算法
前面我们讲解了鸡尾酒排序,今天我们来用代码实现下package ttt;public class CocktailSort { public static int[] cocktailSort(int[] theArray) { while(true){ boolean flag = false; for(int i=0; i&...原创 2018-09-22 00:01:50 · 837 阅读 · 1 评论 -
鸡尾酒排序讲解
鸡尾酒排序是冒泡排序的一种,又称为来回排序。它比冒泡排序要高级点,为何这么说呢冒泡排序是先找最大,然后找第二大,然后一直找完鸡尾酒排序是这样的,先找最大,再找最小,然后找第二大,再找第二小,依次类推,直至找不到了为止举例,有数组[6, 4, 5, 1, 8, 7, 2, 3]先从左到右两两比较并排序,直到8排到最右边[4, 6, 5, 1, 8, 7, 2, 3][4, 5,...原创 2018-09-21 23:54:06 · 1167 阅读 · 0 评论 -
go实现梳排序算法
前面我详细讲解了梳排序算法,现在我们用代码来实现下package mainimport "fmt"//梳排序func combSort(theArray[] int)[]int{ theLen := len(theArray) i := int(float32(theLen)/1.3) for i >=1{ for j := 0; j<theLen; j++...原创 2018-09-21 00:08:23 · 364 阅读 · 4 评论 -
python实现梳排序算法
前面我详细讲解了梳排序算法,现在我们用python代码代码来实现下#!/usr/bin/python# -*- coding: utf-8 -*-#梳排序def _comb_sort(the_list): the_len = len(the_list) if the_len <2:#0和1 print "无需排序" return t...原创 2018-09-21 00:04:42 · 702 阅读 · 0 评论 -
java实现梳排序算法
前面我详细讲解了梳排序算法,现在我们用代码来实现下package ttt;public class CombSort { public static int[] combSort(int[] theArray) { int theLen = theArray.length; int i = (int) (theLen/1.3); while(i &g...原创 2018-09-21 00:04:34 · 443 阅读 · 0 评论 -
梳排序算法讲解
嗯,历史山这些算法的名字总是,嗯,不知道如何说,反正充满了想象力,不过也恰恰形象的说明了这个算法梳排序,跟梳子一样,齿和齿中间有间隙,这个间隙是多少呢,是1.3,嗯,记住就好,为啥是1.3,数学功底比较强的人可以去看看哈,我们这就不做太多讨论,直接举例有数组[6, 4, 5, 1, 8, 7, 2, 3]我们先来算算间隙,上面的数组长度为8,8/1.3=6,则间隙为6我们开始遍历数...原创 2018-09-20 23:59:36 · 728 阅读 · 0 评论 -
go实现计数排序算法
前面我们详细讲解了计数排序算法,今天我们用代码来实现package mainimport "fmt"//计数排序func countingSort(theArray[] int)[]int{ lastArray := make([]int,len(theArray)) for i := 0; i<len(theArray); i++ { count := 0 f...原创 2018-09-26 00:15:58 · 831 阅读 · 2 评论 -
基数排序讲解
基数排序,顾名思义就是找一个基数,然后搞起,一般情况我们都会以10为基数,基数排序也是桶排序的一种,接下来我们通过例子来详细讲解一下有数组[10 1 18 30 23 12 7 5 18 233 144]我们建立一个下标从0到9的桶,然后对数组进行遍历首先我们遍历个位数,把个位数一样的数据放到对应下标的桶中,比如上面的10的个位数是0,所以放到第一个桶中,1的个位数是1,所以放到下标为...原创 2018-09-11 00:02:40 · 638 阅读 · 0 评论 -
go实现希尔排序算法
前面我们详细讲解了希尔排序算法,现在我们直接上go代码package mainimport "fmt"//希尔排序func shellSort(theArray []int) []int { d_value := len(theArray) / 2 for d_value > 0 { for i := 0; i < len(theArray); i++{ j...原创 2018-09-16 23:17:23 · 734 阅读 · 0 评论 -
python实现希尔排序算法
前面我们详细讲解了希尔排序算法,现在我们直接上python代码#!/usr/bin/python# -*- coding: utf-8 -*-#希尔排序def shell_sort(the_list): d_value = len(the_list)/2 while d_value > 0: for i in range(len(the_list...原创 2018-09-16 23:15:57 · 583 阅读 · 0 评论 -
go实现快排算法
前面我们讲解了什么是快排算法现在我们用go语言来实现下:注意,go语言中没有while,可以使用以下格式来代替for{ if(条件){ ****** }else{ break }}具体代码如下package mainimport "fmt"func quickSort(theArray []int,...原创 2018-08-30 07:01:44 · 2226 阅读 · 2 评论 -
java实现快排算法
前面我详细讲解了快排算法,现在我们用java来实现直接上代码package ttt;public class kuaisupaixu { public static int[] quickSort(int[] the_array,int start,int end) { if (start<=end) { int m = start; ...原创 2018-08-29 08:46:19 · 2047 阅读 · 0 评论 -
go实现插入算法
上篇我们简单的解说了插入算法今天我们用go来实现,代码如下package mainimport "fmt"func insertSort(a []int){ shuzu := a fmt.Print("排序前") fmt.Println(shuzu) the_len := len(shuzu) var i int for i < the_len{ var t...原创 2018-08-21 21:51:27 · 601 阅读 · 0 评论 -
python实现快排算法
前面我们讲了快排算法,现在我们来用代码实现一下#!/usr/bin/python# -*- coding: utf-8 -*-#快速排序def quick_sort(the_list, start, end): if start < end: m, n = start, end base = the_list[m] whi...原创 2018-08-28 22:47:56 · 7219 阅读 · 1 评论 -
java实现插入算法
上篇我们简单的解说了插入算法,还不清楚的小伙伴可以留言沟通今天我们来用java实现这个算法,直接上代码package ttt;public class test { public static void getInsertSort(int[] a) { if(a == null || a.length == 0) {//判断是否是个有值数组 ...原创 2018-08-21 07:02:56 · 2651 阅读 · 0 评论 -
python实现插入算法
上篇我们简单的解说了插入算法今天我们用python来实现#!/usr/bin/python# -*- coding: utf-8 -*-#插入排序def _insert_sort(the_list): the_list_len = len(the_list) if the_list_len == 0: print "列表为空,无需排队" ...原创 2018-08-20 23:30:42 · 2134 阅读 · 1 评论 -
插入算法讲解
什么是插入算法,顾名思义,具有插入操作的算法举个生活中的例子,我们平时打扑克牌的时候,习惯性的按照点数的大小进行排序,我们先看到一个牌,然后需要把这个牌和这个牌所在位置的前面所有位置的牌进行一个对比,插入到他能插入的最前面位置。比如[10, 9, 7, 5, 6, 3]第一遍,选第一张牌10:首先我们拿到第一张牌,是10,因为是第一张,所以不需要排序,保持顺序[10, 9, 7...原创 2018-08-20 23:23:20 · 3981 阅读 · 0 评论