Beispiel #1
0
#coding:utf-8
import seed
import times
"""插入排序
    从第一个元素开始,该元素可以认为已经被排序
    取出下一个元素,在已经排序的元素序列中从后向前扫描
    如果该元素(已排序)大于新元素,将该元素移到下一位置
    重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
    将新元素插入到该位置后
    重复步骤2~5
"""
numList = seed.getNum()


@times.times
def insertion(numList):
    newList = [numList[0]]
    print newList
    for index, i in enumerate(numList[1:]):
        for l in range(len(newList)):
            if newList[l] > i:
                newList.insert(l, i)
                break
            elif l == len(newList) - 1:
                newList.append(i)
    return newList


print insertion(numList)

#2万数字排序用时:21.4830000401s
Beispiel #2
0
 #coding:utf-8
import seed
import times
"""插入排序
    从第一个元素开始,该元素可以认为已经被排序
    取出下一个元素,在已经排序的元素序列中从后向前扫描
    如果该元素(已排序)大于新元素,将该元素移到下一位置
    重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
    将新元素插入到该位置后
    重复步骤2~5
"""
numList=seed.getNum()
@times.times
def insertion(numList):
    newList=[numList[0]]
    print newList
    for index,i in enumerate(numList[1:]):
        for l in range(len(newList)):
            if newList[l]>i:
                newList.insert(l,i)
                break
            elif l==len(newList)-1:
                newList.append(i)
    return newList

print insertion(numList)


#2万数字排序用时:21.4830000401s
Beispiel #3
0
#coding:utf-8
import seed
import times
"""冒泡排序算法
冒泡排序算法的运作如下:

    比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
    针对所有的元素重复以上的步骤,除了最后一个。
    持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

"""

num = seed.getNum()


@times.times
def bubble(list):
    listCount = len(list)
    for time in range(listCount):
        time = listCount - time
        for i in range(time - 1):
            if list[i] > list[i + 1]:
                list[i], list[i + 1] = list[i + 1], list[i]
    return list


print bubble(num)

#2万数字排序用时:49.1860001087s
Beispiel #4
0
#coding:utf-8
import times
import seed

@times.times
def count_sort(list):
    min = 2147483647
    max = 0
    # 取得最大值和最小值
    for x in list:
        if x < min:
            min = x
        if x > max:
            max = x
    # 创建数组C
    count = [0] * (max - min +1)
    for index in list:
        count[index - min] += 1
    index = 0
    # 填值
    for a in range(max - min+1):
        for c in range(count[a]):
            list[index] = a + min
            index += 1
    return list


print count_sort(seed.getNum())
Beispiel #5
0
#coding:utf-8
import times
import seed


@times.times
def count_sort(list):
    min = 2147483647
    max = 0
    # 取得最大值和最小值
    for x in list:
        if x < min:
            min = x
        if x > max:
            max = x
    # 创建数组C
    count = [0] * (max - min + 1)
    for index in list:
        count[index - min] += 1
    index = 0
    # 填值
    for a in range(max - min + 1):
        for c in range(count[a]):
            list[index] = a + min
            index += 1
    return list


print count_sort(seed.getNum())
Beispiel #6
0
#coding:utf-8
import seed
import times
"""冒泡排序算法
冒泡排序算法的运作如下:

    比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
    针对所有的元素重复以上的步骤,除了最后一个。
    持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

"""

num=seed.getNum()
@times.times
def bubble(list):
    listCount=len(list)
    for time in range(listCount):
        time=listCount-time
        for i in range(time-1):
            if list[i]>list[i+1]:
                list[i],list[i+1]=list[i+1],list[i]
    return list

print bubble(num)

#2万数字排序用时:49.1860001087s
Beispiel #7
0
#coding:utf-8
import seed
import times
"""选择排序
    在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
    再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
    重复第二步,直到所有元素均排序完毕。
"""

@times.times
def selection(list): 
    n=len(list) 
    for i in range (0,n): 
        min = i 
        for j in range(i+1,n): 
            if list[j]<list[min]: 
                min=j 
        list[min],list[i]=list[i],list[min] 
    return list


print selection(seed.getNum())
#2万数字排序用时:22.3760001659s