qsort() 参考:http://www.slyar.com/blog/stdlib-qsort.html qsort包含在头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。 函数原型:void qsor...
分类:
编程语言 时间:
2014-06-18 21:45:45
阅读次数:
256
这篇文章将讨论:1) 分治策略的思想和理论2) 几个分治策略的例子:合并排序,快速排序,折半查找,二叉遍历树及其相关特性。说明:这几个例子在前面都写过了,这里又拿出来,从算法设计的策略的角度把它们放在一起来比较,看看分治是如何实现滴。由于内容太多,我将再花一篇文章来写4个之前没有写过的分治算法:.....
分类:
其他好文 时间:
2014-06-18 21:06:23
阅读次数:
289
参看:数据结构与算法分析-c语言描述public class Main { public static void main(String[] args) { String[] a = { "a", "d", "e", "f", "m" }; String[] b =...
分类:
编程语言 时间:
2014-06-18 16:08:33
阅读次数:
211
/* 合并排序 O(n*lgn) */ #include using namespace std; #define MAXN 100 int a[MAXN]; void Merge(int a[MAXN],int lef...
分类:
其他好文 时间:
2014-06-18 13:01:30
阅读次数:
229
排序思想:每次排序区间的第一个元素作为基准,把此区间内比基准大的元素放在基准右边,比基准小的元素放在基准左边。
性能分析:从空间复杂度方面,快速排序是递归的,每层递归调用时的指针和参数均要用栈来存放,递归调用次数与二叉树的深度一致。因此,在理想情况下,及每一趟排序都将记录序列均匀的分隔成长度接近的两个子序列,则需要栈空间为O(logn);在最坏情况下,即每趟排序之后,基准元素位置均偏向子序列的一...
分类:
其他好文 时间:
2014-06-17 21:55:05
阅读次数:
201
一:截图二:快速排序详解快速排序法(QuickSort)是一种非常快的对比排序方法。它也Divide-And-Conquer思想的实现之一。自从其产生以来,快速排序理论得到了极大的改进,然而在实际中却十分难以编程出正确健壮的代码。本文将对快速排序算法的基本理论和编程实践方面做作一个全面的讲解。在本文...
分类:
其他好文 时间:
2014-06-17 21:10:17
阅读次数:
244
一. 算法描述 快速排序:快速排序采用分治法进行排序,首先是分割,选取数组中的任意一个元素value(默认选用第一个),将数组划分为两段,前一段小于value,后一段大于value;然后再分别对前半段和后半段进行递归快速排序。其实现细节如下图所示:二. 算法实现/*================....
分类:
其他好文 时间:
2014-06-17 13:15:16
阅读次数:
211
经典排序算法:快速排序法 让算法会说话,让程序自己告诉我们怎么回事...
分类:
其他好文 时间:
2014-06-16 22:16:04
阅读次数:
224
package com.hello;
public class HelloJava {
/**
* 冒泡排序(通过一次一次的循环,根据相近两个值进行比较,将大的值往下移)
* @author MR ZHANG
* @param arr
* @return
*/
public static void getBubbleSort(int[] arr){
for(int i...
分类:
其他好文 时间:
2014-06-16 14:31:50
阅读次数:
250
快速排序(Quick Sort)也是一种交换排序,它在排序中采取了分治策略。
快速排序的主要思想是:
从待排序列中选取一元素作为轴值(也叫主元)。
将序列中的剩余元素以该轴值为基准,分为左右两部分。左部分元素不大于轴值,右部分元素不小于轴值。轴值最终位于两部分的分割处。
对左右两部分重复进行这样的分割,直至无可分割。...
分类:
其他好文 时间:
2014-06-15 15:28:14
阅读次数:
301