【快速排序】: 利用递归算法, 首先选择一个基准值(pivot value),这里我们选列表的第一个值作为例。这个基准值的作用是协助列表的分割。 这个基准值在正序列表中的正确位置,我们称之为分割点(split point)。这个点用于将列表分成两个部分,然后再对每个部分做快速排序。 分割过程如下: ...
分类:
编程语言 时间:
2018-01-21 14:47:24
阅读次数:
176
1 void quick_sort(int arr[], int i,int j){ 2 if(i >= j) return; 3 int mid = arr[j]; 4 inta=i,b=j-1; 5 while(a = mid && a = arr[j]) 13 swap(arr[a], arr... ...
分类:
编程语言 时间:
2018-01-20 22:46:04
阅读次数:
172
之前介绍了堆排序和归并排序,今天来说说快速排序。快速排序是应用较多的一种排序方法。 各算法平均排序时间: 数据是随机整数,时间单位是秒。(网上的数据,仅供参考) 数据规模 快速排序 归并排序 希尔排序 堆排序 1000万 0.75 1.22 1.77 3.57 5000万 3.78 6.29 9.4 ...
分类:
编程语言 时间:
2018-01-10 11:44:56
阅读次数:
180
先上实现了的C++代码: 下边说说两个注意点: (1)关于quick_sort函数第一句,为什么要判断left是否大于right? 考虑这样一组输入数据: 10279 786 373 946 460 552 698 754 519 759这组数据就是为什么要有if(left > right)的原因, ...
分类:
编程语言 时间:
2017-12-20 16:57:36
阅读次数:
132
title: 快速排序法(quick sort) tags: 分治法(divide and conquer method) grammar_cjkRuby: true 算法原理 分治法的基本思想 :将原问题分解为若干个更小的与原问题相似的问题,然后递归解决各个子问题,最后再将各个子问题的解组合成原问 ...
分类:
编程语言 时间:
2017-11-14 23:24:16
阅读次数:
260
#!/usr/bin/env python # -*- coding: utf-8 -*- def quick_sort(arr): l = len(arr) _quick_sort(arr, 0, l -1) tmp = 0 def _quick_sort(arr, start, end): pr... ...
分类:
编程语言 时间:
2017-10-18 15:02:41
阅读次数:
223
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int n; 5 const int maxn=1e5+2; 6 int s[maxn]; 7 8 void quick_sort(int l,int ...
分类:
其他好文 时间:
2017-09-18 22:14:26
阅读次数:
343
# encoding=utf-8 def quick_sort(alist, start, end): """快速排序""" if start >= end: return mid = alist[start] left = start right = end while left = mid: r... ...
分类:
编程语言 时间:
2017-09-16 14:45:03
阅读次数:
135
快速排序,说白了就是快啦,不过有两种实现方式,一种普通,一种In-place,后面的比前面的占用较少空间。 快排用分治法解决。 最佳时间复杂度:O(nlog n) 平均时间复杂度:O(nlog n) 最差时间复杂度:O(n2) 空间复杂度:一般版本O(n),In-place O(log n) ...
分类:
编程语言 时间:
2017-09-16 13:46:38
阅读次数:
161
1/排序算法:冒泡排序bubble sort,插入排序 insertion sort,选择排序 selection sort,快速排序 quick sort,归并排序 merge sort;堆排序 heap sort 基于排序 桶排序bucket sort 一种特殊情况下的排序。 2/实现 1)冒泡 ...
分类:
其他好文 时间:
2017-09-03 10:11:26
阅读次数:
207