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实现冒泡排序和快速排序的主要内容,如果未能解决你的问题,请参考以下文章

Go语言实现冒泡排序选择排序快速排序及插入排序的方法

使用python实现冒泡排序和快速排序

go实现冒泡排序和快速排序

冒泡排序和快速排序的Java实现

快速排序算法回顾 --冒泡排序Bubble Sort和快速排序Quick Sort(Python实现)

交换排序(冒泡排序快速排序的算法思想及代码实现)