所谓交换排序就是依次比较两个相邻元素的大小并根据需求进行交换,这里有两种交换排序。
1、冒泡排序、冒泡排序就是依次比较两个相邻数字,把两个数字中较大的放后边(这是从小到大排序,如果是降序排列,则反过来),这样一轮跑下来最大的那个数字就放到了最后,所谓冒泡就是每次都拿到当前剩余数字中最大的那个并依次放置在其应该放在的位置。这里能看出来也不需要开新空间,但是每跑一趟都需要把剩下的数字都玩儿一遍,时间效率很大,也是n平方了。
2、快速排序,调用了递归的思想,每次在序列中找到一个数字,这个数字后续处理时要求找到一个位置,在这个位置左边的数字都比他小,而右边又都比他大,然后再对左边和右边依次进行处理。
上代码。
冒泡排序不给了,比较简单,直接给快速排序。
def quickSort(numList,left,right): if left >= right: return temp = numList[left] i = left j = right while i != j: while i < j and numList[j] >= temp: j -= 1 while i < j and numList[i] <= temp: i += 1 if i < j: numList[i],numList[j] = numList[j],numList[i] numList[left] = numList[i] numList[i] = temp quickSort(numList,left,i - 1) quickSort(numList,i + 1,right)
if __name__ == ‘__main__‘: numList = [32, 57, 69, 0, 2, 18, 100, 7] quickSort(numList,0,len(numList) - 1) print ‘快速排序‘ for x in numList: print x, print ‘\n‘ import random a = [] for i in range(100): temp = random.randint(0, 100) while True: for x in range(len(a)): if a[x] == temp: temp = random.randint(0, 100) break else: a.append(temp) break # a.append(random.randint(0,100)) for item in a: print item, print ‘\n‘ quickSort(a,0,len(a) - 1) for x in a: print x, print ‘\n‘
时间: 2024-11-05 17:34:44