码迷,mamicode.com
首页 > 编程语言 > 详细

交互设计算法基础(3) - Quick Sort

时间:2017-09-16 13:46:38      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:快速   tar   排序   占用   解决   ace   版本   算法   logs   

 1 int pivotIndex, pivot, swapIndex;
 2 
 3 void swap(int[] arr, int x, int y) {
 4   int temp = arr[x];
 5   arr[x] = arr[y];
 6   arr[y] = temp;
 7 }
 8 
 9 void quickSort(int[] arr, int start, int end) {
10   if (end <= start) return;
11 
12   pivotIndex = (start + end)/2;
13   pivot = arr[pivotIndex];
14   swap(arr, pivotIndex, end);
15   swapIndex = start;
16   for (int i = start; i < end; i++) {
17     if (arr[i] <= pivot) {
18       swap(arr, i, swapIndex);
19       ++swapIndex;
20     }
21   }
22   swap(arr, swapIndex, end);
23 
24   quickSort(arr, start, swapIndex-1);
25   quickSort(arr, swapIndex+1, end);
26 } 
27 
28 void draw() {
29   noLoop();
30   int[] arr = {10, 5, 2, 3};
31   quickSort(arr, 0, arr.length-1);
32   println(arr);
33 }

快速排序,说白了就是快啦,不过有两种实现方式,一种普通,一种In-place,后面的比前面的占用较少空间。

快排用分治法解决。

最佳时间复杂度:O(nlog n)

平均时间复杂度:O(nlog n)

最差时间复杂度:O(n2)

空间复杂度:一般版本O(n),In-place O(log n)

交互设计算法基础(3) - Quick Sort

标签:快速   tar   排序   占用   解决   ace   版本   算法   logs   

原文地址:http://www.cnblogs.com/x5115x/p/7530765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!