import random
def rand(n):
for i in range(n):
yield random.randint(0,1000)
#创建一个随机数列表
def createList(n):
lists=[]
for i in rand(n):
lists.append(i)
return lists
#挖坑法高速排序
def quick_sort(lists,l,r):
if(l<r):
#x是选取的pivot基准值,然后把数据大于基准值的排到右边。小于基准值的排到左边
i,j,x=l,r,lists[l]
while(i<j):
#j从右边開始遍历,找到j<x的地方,并跟lists[i]交换。
while(i<j and lists[j]>=x):
j-=1
if(i<j):
lists[i]=lists[j]
i+=1
#i从左边開始遍历,找到j>x的地方。并跟lists[j]交换
while(i<j and lists[i]<=x):
i+=1
if(i<j):
lists[j]=lists[i]
j-=1
#此时,i已经大于等于j了。也就是说i左边的都小于x,右边都大于x,所以如今把i填入x,接下来就递归排序
lists[i]=x
quick_sort(lists,l,i-1)
quick_sort(lists,i+1,r) lists=createList(1000)
print lists
quick_sort(lists,0,len(lists)-1)
print lists

最新文章

  1. Python Web.py与AJAX交互
  2. JavaScript对象详解
  3. 数据访问模式:数据并发控制(Data Concurrency Control)
  4. Ajax与jQuery、json
  5. ImportError: No module named MySQLdb
  6. test Windows Live Writer
  7. 【原】CentOS7上安装Xwiki8.2.1
  8. noj [1475] Bachelor (找1的个数)
  9. ACMDP之最长公共子序列长度—HDU1159
  10. 卓越网的kindle paperwhite
  11. shell脚本中字符串的常见操作及&quot;command not found&quot;报错处理(附源码)
  12. datetime日期和时间
  13. C语言链表:逆序建立单链表
  14. 调整Eclipse中代码字体字号
  15. mysql5.5升级到5.7
  16. C# GroupBy分组的问题和解决
  17. Scapy的使用
  18. H5移动端JS操作LocalStorage方法
  19. CentOS vps下,安装xfce/KDE/GNOME桌面+vncserver进行远程管理
  20. go的精选类库

热门文章

  1. drupal常用api
  2. CAT3 SAP tcode - Time Sheet: Display Times
  3. react native中Unable to load script from assets &#39;index.android.bundle&#39;解决方案
  4. nodejs设置NODE_ENV环境变量(2)
  5. Bootstrap源码分析系列之核心CSS
  6. Windows Server查看和记录远程登录信息的方法
  7. scaffold-dbcontext 命令使用说明
  8. PHP学习第一天
  9. selenium-键盘和鼠标事件
  10. Audit log report