zoukankan      html  css  js  c++  java
  • 快速排序

    首先要理解快速排序的思想:

    1.选取一个数字作为基准,可选取末位数字

    2.将数列第一位开始,依次与此数字比较,如果小于此数,将小数交换到左边,最后达到小于基准数的在左边,大于基准数的在右边,分为两个数组

    3.分别对两个数组重复上述步骤

    其中一次排序图示如下:

    代码及注意事项如下

    #coding:utf-8
    class quicksort:
    def Quicksort(self,arr,firstindex,lastindex):
    if firstindex<lastindex:#初始下标小于末尾下标
    divindex=self.partion(arr,firstindex,lastindex)#得到用最后一个元素分割的大小元素的最终位置
    self.Quicksort(arr,firstindex,divindex)#注意这两步都是在if条件中
    self.Quicksort(arr,divindex+1,lastindex)
    else:#注意这块是终止条件,一定要写!!!!!!!!!!!!!
    return
    def partion(self,arr,firstindex,lastindex):
    i=firstindex-1#因为下面的循环每次循环i加1来控制左边的位置的下标,所以初始减1
    for j in range(firstindex,lastindex):#不需要循环最后一个元素(因为后面不需要最后一个元素跟他本身比较)
    if arr[j]<=arr[lastindex]:#注意还有等于号
    i += 1#比较当前元素与最后一个元素的大小,如果当前元素较小,则与前面较大的元素交换,使得较小的元素都在左边
    arr[i],arr[j]=arr[j],arr[i]#这种交换元素的写法给跪~很棒
    arr[lastindex],arr[i+1]=arr[i+1],arr[lastindex]#注意i要加1,否则前面已经交换过下标为i的元素了。第一个轮换结束后将最后一个元素放到可以分开大小元素的中间
    return i


    arr = [1, 4, 7, 1, 5, 5, 3, 85, 34, 75, 23, 75, 2, 0]
    q=quicksort()
    print("initial array: ", arr)
    q.Quicksort(arr, 0, len(arr) - 1)
    print("result array: ", arr)
    本文主要的思路参考https://www.cnblogs.com/feichangnice/p/5334195.html,小菜一枚,如侵联删~~~~~~~~~
  • 相关阅读:
    CF1011B
    CF1011A
    AHOI2009 中国象棋
    jsp九大内置对象
    jsp七大动作指令
    navicat从下载到使用
    javaWeb应用部署结构浅析
    tomcat从下载到使用
    JavaWEB前端向服务器端发送对象
    初学者对Spring MVC的认识
  • 原文地址:https://www.cnblogs.com/kjkj/p/9894657.html
Copyright © 2011-2022 走看看