码迷,mamicode.com
首页 > 编程语言 > 详细

常用排序

时间:2016-05-15 19:43:29      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

一、几种排序的比较:

技术分享

 

二、排序的代码实现

 

1、冒泡排序

 给定一组随机数字的数列,将它们按照从小到大的顺序重新排列好。就像冒泡一样,小的数不断地向上漂浮,直到没有为止。

排序基本思路:循环这个数列,将循环到的数字n1与下一个数字n2作出对比,如果n2>n1,那么将两个值换位,如此下去当第一次循环结束时,最小的数已经在最前面,重复这样的循环就会将这组数按从小到大的顺序排列好。

li = [11,432,5,4576,234,3,324,5,876,456,235432,56]

for m in range(len(li)-1):
    for n in range(m+1, len(li)):
        if li[m] > li[n]:
            tmp = li[m]
            li[m] = li[n]
            li[n] = tmp

print li

测试排列5万个小于2000的随机数字,结果发现用时为:118秒

 

2、插入排序(Insertion Sort)

排序基本思路:插入排序简单的理解为  从一组数据的第二个值n开始循环,通过n与前面数值对比大小,将n插入到前面合适的位置。通过不断地向后循环对比大小,那么前面一部分的数据始终是已经排序好的数组。这样全部循环下来,就得到了一个从小到大排列OK的数组。

[77, 92, 67, 8, 6, 84, 55, 85, 43, 67]
[67, 77, 92, 8, 6, 84, 55, 85, 43, 67]
[8, 67, 77, 92, 6, 84, 55, 85, 43, 67]
[6, 8, 67, 77, 92, 84, 55, 85, 43, 67]
[6, 8, 67, 77, 84, 92, 55, 85, 43, 67]
[6, 8, 55, 67, 77, 84, 92, 85, 43, 67]
[6, 8, 55, 67, 77, 84, 85, 92, 43, 67]
[6, 8, 43, 55, 67, 77, 84, 85, 92, 67]
[6, 8, 43, 55, 67, 67, 77, 84, 85, 92]

 

技术分享
# _*_coding:utf:8_*_

import random
import time


def sort_meth(source):

    for i in range(1, len(source)):
        currant_val = source[i]  # 获取当前循环列表中的值
        position = i    # 获取当前循环的次数
        while position > 0 and source[position-1] > currant_val:  # 当左边的数大于大循环中的数时

            source[position] = source[position-1]  # 将小循环此刻的数赋值等于左边较大的值
            position -= 1
        source[position] = currant_val    # 最终小循环结束时,就是大循环的数应该插入的位置


if __name__ == __main__:
    #array = [871,100,160,755,614,621,403,671,256,915,174,906]
    array = []
    for i in range(50000):
        array.append(random.randrange(2000))

    time_start = time.time()
    sort_meth(array)
    time_end = time.time()
    ret = time_end-time_start
    print(ret)
插入排序

 

测试排列5万个小于2000的随机数字,结果发现用时为:115

 

3、快速排序(quick sort)

 

常用排序

标签:

原文地址:http://www.cnblogs.com/chenchao1990/p/5495825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!