nodejs实现冒泡排序和快速排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs实现冒泡排序和快速排序相关的知识,希望对你有一定的参考价值。
参考技术A 冒泡排序:双层循环,内部循环每次选出最大值或者最小值,放到头上或者放在尾部快速排序:递归调用,每次递归选出一个“中值”,头部和尾部分别跟“中值”比较,找出可交换值后交换位置。每次交换后,数组的逆序减少比其他排序算法要多,所以相对比较快
使用python实现冒泡排序和快速排序
1 def bubble(arr): 2 """冒泡排序""" 3 loop = len(arr) - 1 4 if loop > 0: 5 for l in range(loop): 6 for i in range(loop - l): 7 if arr[i] > arr[i + 1]: 8 arr[i], arr[i + 1] = arr[i + 1], arr[i] 9 return arr 10 11 12 def split_array(nums, left, right): # 返回调整后基准数的位置 13 key = nums[left] # nums[left]就是第一个坑 14 while left < right: 15 # right下标位置开始,向左边遍历,查找不大于基准数的元素 16 while left < right and nums[right] >= key: 17 right -= 1 18 if left < right: # 找到小于准基数key的元素,然后交换nums[left],nums[right] 19 nums[left], nums[right] = nums[right], nums[left] 20 else: # left〉=right 跳出循环 21 break 22 # left下标位置开始,向右边遍历,查找不小于基准数的元素 23 while left < right and nums[left] < key: 24 left += 1 25 if left < right: # 找到比基准数大的元素,然后交换nums[left],nums[right] 26 nums[right], nums[left] = nums[left], nums[right] 27 else: # left〉=right 跳出循环 28 break 29 nums[left] = key 30 return left # 此时left==right 所以返回right也是可以的 31 32 33 def quick_sort(nums, left, right): 34 if left < right: 35 key_index = split_array(nums, left, right) 36 quick_sort(nums, left, key_index - 1) 37 quick_sort(nums, key_index + 1, right) 38 39 40 if __name__ == "__main__": 41 from random import randint 42 nums = list(randint(10, 99) for i in range(100)) 43 print(nums) 44 quick_sort(nums, 0, len(nums) - 1) 45 print(nums)
快速排序的理解可以参见http://blog.csdn.net/morewindows/article/details/6684558 写的很好
以上是关于nodejs实现冒泡排序和快速排序的主要内容,如果未能解决你的问题,请参考以下文章