常见算法之快速排序

算法原理

快速排序是对冒泡排序的改进,采用的是分治思想,即在一个无序的序列中选取一个任意的基准元素pivot,利用pivot将待排序的序列分成两部分,前面部分元素均小于或等于基准元素,后面部分均大于或等于基准元素,然后采用递归的方法分别对前后两部分重复上述操作,直到序列不可再分,最终得到一个有序的序列。

单指针实现

def partition(arr, low, high):
    i = low  
    pivot = arr[high]

    for j in range(low, high):
        print(data[low:high])
        if arr[j] <= pivot:
            arr[i], arr[j] = arr[j], arr[i]
            i = i + 1
    arr[i], arr[high] = arr[high], arr[i]
    return i

def quickSort(arr, low, high):
    if low < high:
        pi = partition(arr, low, high)

        quickSort(arr, low, pi - 1)
        quickSort(arr, pi + 1, high)
    return arr 
  

双指针实现

def quick_sort(arr,left,right):
    if left < right:
        temp = arr[left]
        i,j = left,right
        while i < j:
            while arr[j] >= temp and i < j:
                j -= 1
            while arr[i] <= temp and i < j:
                i += 1

            if i < j:
                arr[i],arr[j] = arr[j],arr[i]
        
        arr[i],arr[left] = arr[left],arr[i]
        print(arr)
        quick_sort(arr,left,i-1)
        quick_sort(arr,i+1,right)
    return arr
    ```

相关推荐

  1. 常见算法快速排序

    2024-03-29 02:30:03       21 阅读
  2. 常见排序算法---快速排序算法

    2024-03-29 02:30:03       53 阅读
  3. 排序算法快速排序

    2024-03-29 02:30:03       46 阅读
  4. C#算法快速排序

    2024-03-29 02:30:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 02:30:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 02:30:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 02:30:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 02:30:03       20 阅读

热门阅读

  1. Qt单例线程教程

    2024-03-29 02:30:03       17 阅读
  2. openGauss逻辑解码

    2024-03-29 02:30:03       22 阅读
  3. leetcode48. 旋转图像

    2024-03-29 02:30:03       17 阅读
  4. QT(3/26)

    QT(3/26)

    2024-03-29 02:30:03      17 阅读
  5. 被迫走上前端之路第三课之vue的v-on事件监听

    2024-03-29 02:30:03       19 阅读