每天一道编程题(七)------------------快速排序
2012-02-23 11:22
176 查看
快速排序是将要排序的集合A,进行分块排序。一般步骤为:1.如果A中的元素个数是0或1,则返回。2.A中的任意元素为pivot(中心元素【个人理解】)3.将A按照中心元素划分为两部分A1和A2 4.对A1和A2分别进行如上操作。其实是一个递归的过程。如何选取中心元素会影响到快速排序的速度,本次算法采用最普遍的将数组中的第一个元素作为pivot
public class QuickSort { public static int pivot(int[] nums,int first,int last){ int key=nums[first]; while(first<last){ while((first<last)&&(nums[last]>=key)) last--; nums[first]=nums[last]; while((first<last)&&(nums[first]<=key)) first++; nums[last]=nums[first]; } nums[first]=key; return first; } public static void quicksort(int[] nums,int first,int last){ if(first<last){ int pivot=pivot(nums, first, last); quicksort(nums, first, pivot-1); quicksort(nums, pivot+1, last); } } public static void main(String[] args){ int[] num={10,9,8,7,6,5,4,3,2,1}; int[] num2={1,2,3,4,5,6}; quicksort(num,0,num.length-1); for (int a:num){ System.out.println(a); } } }
相关文章推荐
- 每天一道编程题——打印沙漏
- 每天一道编程题(九)----------堆排序
- 每天一道编程题(1)
- 每天一道编程题——素数对猜想
- 每天一道编程题(2)
- 每天一道编程题(3)
- C语言 每天做一道编程题
- 每天一道编程题——Have Fun with Numbers
- 每天一道编程题(一)----24点游戏
- 每天一道编程题(八)----------牛顿迭代法求根式
- 每天一道编程题——数组元素循环右移问题
- 每天一道编程题(二)------求字符串中个数最多的字符串的个数,并打印
- 每天一道编程题(六)-------希尔排序
- 每天一道编程题(八)--------百钱买百鸡
- 每天一道编程题----------------淘宝小白鼠喝药问题
- 每天一道编程题(十)---------java竞赛称砝码问题
- 每天一道编程题----------------辗转相除法求两个数的最大公约数及其证明
- 每天一道编程题(三)------插入排序
- 每天一道编程题(四)--------冒泡排序
- 每天一道编程题------------百度蚂蚁爬杆问题