【python实现的希尔排序算法实例】教程文章相关的互联网学习教程文章

python实现排序算法

代码如下:def insertion_sort(n): if len(n) == 1: return n b = insertion_sort(n[1:]) m = len(b) for i in range(m): if n[0] <= b[i]: return b[:i]+[n[0]]+b[i:] return b + [n[0]]l = [1,3,4,2,6,7,9,7,12,11,789,345,456]print insertion_sort(l)d = input(l=)print insertion_sort(d)a = input(y:)

Python实现的几个常用排序算法实例

前段时间为准备百度面试恶补的东西,虽然最后还是被刷了,还是把那几天的“战利品”放点上来,算法一直是自己比较薄弱的地方,以后还要更加努力啊。 下面用Python实现了几个常用的排序,如快速排序,选择排序,以及二路并归排序等等。 代码如下:#encoding=utf-8import randomfrom copy import copy def directInsertSort(seq): """ 直接插入排序 """ size = len(seq) for i in range(1,size): tmp, j = seq[i], i while j > 0 an...

python实现bucket排序算法实例分析

本文实例讲述了python实现bucket排序算法。分享给大家供大家参考。具体实现方法如下:def bucketSort(a, n, buckets, m):for j in range(m):buckets[j] = 0for i in range(n):buckets[a[i]] += 1i = 0for j in range(m):for k in range(buckets[j]):a[i] = ji += 1希望本文所述对大家的Python程序设计有所帮助。

python实现的希尔排序算法实例

本文实例讲述了python实现希尔排序算法的方法。分享给大家供大家参考。具体如下:def shellSort(items):inc = len(items) / 2while inc:for i in xrange(len(items)):j = itemp = items[i]while j >= inc and items[j-inc] > temp:items[j] = items[j - inc]j -= incitems[j] = tempinc = inc/2 if inc/2 else (0 if inc==1 else 1) a = [35, -8, 11, 1, 68, 0, 3]; shellSort(a) print a # [-8, 0, 1, 3, 11, 35, 68]希望本文所述...

Python实现快速排序和插入排序算法及自定义排序的示例

一、快速排序快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序,递归实现def quick_sort(num_list):"""快速排序"""if num_list == []:return num_listsmallLi...

浅谈插入排序算法在Python程序中的实现及简单改进

Python实现插入排序的一般范例为:#coding=cp936 #coding=cp936 #插入排序算法 def InsertionSort(A):for j in range(1,len(A)):key = A[j]i = j-1#向前查找插入位置while i>=0 and A[i]>key:A[i+1] = A[i]i = i-1A[i+1] = key#初始化输入数据 A = [] input = raw_input(please input some numbers:) #输入逗号分隔整数列 如:7,6,5,1,8,34 for item in input.split(,):A.append(int(item))InsertionSort(A)#插入排序 print A...

python计数排序和基数排序算法实例

一、计数排序 计数排序(Counting sort)是一种稳定的排序算法 算法的步骤如下:找出待排序的数组中最大和最小的元素统计数组中每个值为i的元素出现的次数,存入数组C的第i项对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1当输入的元素是 n 个 0 到 k 之间的整数时,计数排序的时间复杂度为O(N+K),空间复杂度为O(N+K)。当K不是很大时...

python实现的各种排序算法代码

代码如下:# -*- coding: utf-8 -*-# 测试各种排序算法# link:www.bitsCN.com# date:2013/2/2 #选择排序def select_sort(sort_array): for i, elem in enumerate(sort_array): for j, elem in enumerate(sort_array[i:]): if sort_array[i] > sort_array[j + i]: #交换 sort_array[i], sort_array[j + i] = sort_array[j + i], sort_array[i]#冒泡排序def bubble_sort(sort_a...

python实现归并排序算法

理论不多说: 代码如下: #!/usr/bin/python import sys def merge(array, q, p, r): left_array = array[q:p+1] right_array = array[p+1:r+1] left_array_num = len(left_array) right_array_num = len(right_array) i, j , k= [0, 0, q] while i < left_array_num and j < right_array_num: if (left_array[i] < right_array[j]): array[k] = left_array[i] i+=1 else: array[k] = right_array[j] j+=1 k+=1 while i < left_arr...

python选择排序算法实例总结

本文实例总结了python选择排序算法。分享给大家供大家参考。具体如下: 代码1:def ssort(V): #V is the list to be sorted j = 0#j is the "current" ordered position, starting with the first one in the list while j != len(V):#this is the replacing that ends when it reaches the end of the list for i in range(j, len(V)):#here it replaces the minor value that it finds with j position if V[i] < V[j]:#but it d...

python插入排序算法实例分析

本文实例讲述了python插入排序算法。分享给大家供大家参考。具体如下:def insertsort(array): for removed_index in range(1, len(array)): removed_value = array[removed_index] insert_index = removed_index while insert_index > 0 and array[insert_index - 1] > removed_value: array[insert_index] = array[insert_index - 1] insert_index -= 1 array[insert_index] = removed_value另外一个版本:def insertsort(array)...

python简单实现基数排序算法

本文实例讲述了python简单实现基数排序算法。分享给大家供大家参考。具体实现方法如下:from random import randint def main():A = [randint(1, 99999999) for _ in xrange(9999)]for k in xrange(8):S = [ [] for _ in xrange(10)]for j in A:S[j / (10 ** k) % 10].append(j)A = [a for b in S for a in b]for i in A:print i main()希望本文所述对大家的Python程序设计有所帮助。

mysql 排序长度限制之max_length_for_sort_data以及mysql两种排序算法

SET max_length_for_sort_data = 1024 SHOW VARIABLES LIKE ‘%max_length_for_sort_data%‘; 查询:SELECT * FROM CS_COLUMNS ORDER BY table_name,column_name LIMIT 0,100 错误代码: 1815Internal error: IDB-2015: Sorting length exceeded. Session variable max_length_for_sort_data needs to be set higher. 执行耗时 : 7.171 sec mysql有两种文件排序算法(双路排序和单路排序),如果需要排序的列的总大小加上order b...

图解堆排序算法【图】

关注下方公众号,分享硬核知识 01 演进 结点和边,构成一个图。不含环的连通图,便成了一棵树。每个结点拥有的子结点数称为结点的度。多棵树便构成了一个森林。结点的度最大为2的树便是二叉树;最大度为N的是N叉树,或多叉树。除叶子结点,每个结点的度都为2,称为满二叉树。除去最后一层之后的子树为满二叉树,且最后一层结点依次从左到右分布,则称为完全二叉树。如果在完全二叉树上再加一个限制条件:如结点都大于等于其子结点,...

常用排序算法一句话快速拾起

更详细的内容在博文各个常用的排序算法的适用场景详细分析(原地,稳定,最好、最坏、平均时间复杂度)和各个排序算法的实现与优化(含动画演示)中已经进行了详细了讲解,这里是为了方便快速拾起进行的一句话总结冒泡排序:从前向后依次相邻的两个元素作比较,前比后大则交换,反之无操作 插入排序:从前向后遍历元素,并将遍历到的元素插入前段已遍历元素的合适位置 选择排序:将未排序区间中的最小值放在未排序区间最前,或最大...