首页 > 编程 > Python > 正文

Python基础----排序(插入、冒泡、快速、归并)

2019-11-08 02:23:48
字体:
来源:转载
供稿:网友
# -*- coding:UTF-8 -*-def insert_sort(origin_list):    sorted_list = []    for i in range(0, len(origin_list)):        #PRint sorted_list        if len(sorted_list) == 0:            sorted_list.append(origin_list[i])            continue        for j in range (len(sorted_list)-1, -1, -1):#开始值、结束值、步长            if sorted_list[j] <= origin_list[i]:                sorted_list.insert(j +1, origin_list[i])                break            if j == 0:                sorted_list.insert(0, origin_list[i])    origin_list[:] = sorted_list[:]origin_list = [5,3,1,7,9,8]insert_sort(origin_list)#print origin_listdef bubble_sort(origin_list):   for i in range(len(origin_list), 0, -1):        for j in range(0, i-1):            if origin_list[j] > origin_list[j+1]:                origin_list[j], origin_list[j+1] = origin_list[j+1], origin_list[j]origin_list = [5,3,1,7,9,8]bubble_sort(origin_list)#print origin_listdef quick_sort(origin_list, start, end):    if start >= end:        return    left = start    right = end    flag_index = left    while left < right:        while right > left:            if origin_list[right] < origin_list[flag_index]:                origin_list[right], origin_list[flag_index] = origin_list[flag_index], origin_list[right]                flag_index = right                break            right -= 1        while left < right:            if origin_list[left] > origin_list[flag_index]:                origin_list[left], origin_list[flag_index] = origin_list[flag_index], origin_list[left]                flag_index = left                 break            left += 1        quick_sort(origin_list, start, flag_index)        quick_sort(origin_list, flag_index+1, end)origin_list = [5,3,1,7,9,8]quick_sort(origin_list, 0, len(origin_list) -1)#print origin_listdef merge_sort(origin_list, start, end):    if end <= start:        return    mid = (start + end) / 2    merge_sort(origin_list, start, mid)    merge_sort(origin_list, mid + 1, end)    left_head = start    right_head = mid + 1    temp_list = []    while left_head <= mid and right_head <=end:        if origin_list[left_head] < origin_list[right_head]:            temp_list.append(origin_list[left_head])            left_head += 1        if origin_list[left_head] > origin_list[right_head]:            temp_list.append(origin_list[right_head])            right_head += 1    if left_head <= mid:        temp_list += origin_list[left_head:mid + 1]    if right_head <= end:        temp_list += origin_list[right_head:end + 1]    for i in range(0, len(temp_list)):        origin_list[i + start] = temp_list[i]        origin_list = [5,3,1,7,9,8]merge_sort(origin_list, 0, len(origin_list) -1)print origin_list
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表