`
yuxingfirst
  • 浏览: 49642 次
  • 性别: Icon_minigender_1
  • 来自: 湘潭
社区版块
存档分类
最新评论

算法研究系列---快速排序

 
阅读更多

快速排序是由冒泡排序改进而来的.

算法思想:  

             在待排序的n个记录中,选取其中任意一个记录(通常是第一个),把该记录放在适当的位置后,则数据序列被划分为两部分。所有比该记录小的记录均放置到该记录的前一部分;所有笔该记录大的记录均放置到该记录的后一部分,并把该记录排在这两部分的中间(称该记录为记录归位),这个过程成为一趟快速排序。   之后对所有的两部分分别重述这一过程,直至每部分内只有一个记录或为空为止。简而言之,每趟使得一个记录放到适当位置,将表一分为二,对子表按递归的方式继续这种划分,直至划分的子表长度为1或0

package switchsort;

public class QuickSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a = new int[] { 5, 1, 9, 8, 6, 3, 2, 8, 6,584,54,125,6,5,147,85478,241,2412,365,256,985,589,895,745,487 };
		a = quickSort(a, 0, a.length - 1);
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + "  ");
		}
	}

	public static int[] quickSort(int[] a, int start, int end) {
		int i = start;
		int j = end;
		int tmp;
		int middle = a[(start + end) / 2];
			while (i < j) {
				while (a[j] > middle) {
					j--;
				}
				while (a[i] < middle) {
					i++;
				}
				if (i <= j) {
					tmp = a[i];
					a[i] = a[j];
					a[j] = tmp;
					i++;
					j--;
				}
			}
			if (j > start) {
				quickSort(a, start, j);
			}
			if (i < end) {
				quickSort(a, i, end);
			}
		return a;
	}

	
}
 
1
2
分享到:
评论
3 楼 yuxingfirst 2011-10-10  
Mon__cherie 写道
无意中发现一个bug

当数组中有两个一样的数字事   while循环会死循环
  LZ注意了么?

嗯 看到了  谢谢! 代码已修正
2 楼 Mon__cherie 2011-10-09  
无意中发现一个bug

当数组中有两个一样的数字事   while循环会死循环
  LZ注意了么?
1 楼 fka2004 2011-10-09  
学习了,谢谢~~

相关推荐

    数据结构与排序算法------通过代码示例,讲解:数据结构和9种排序算法。.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    十五个经典算法研究与总结、目录+索引(定稿版)

    本人的原创作品经典算法研究系列,自从10年12月末至11年12月,写了近一年。可以这么说,开博头俩个月一直在整理微软等公司的面试题,而后的四个月至今,则断断续续,除了继续微软面试100题系列,和程序员...

    算法设计 - 排序、动态规划、数学问题 - 实用编程资源合集

    其中包含多种排序算法的实现与分析,如快速排序、归并排序、堆排序等,以及动态规划在解决最长公共子序列、矩阵链相乘问题上的应用。此外,还探讨了三壶谜题、交替放置的碟子等经典数学问题的算法思路。 适用人群为...

    基础算法与数据结构 -- Java 实现.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    十五个经典算法研究与总结

    本经典算法研究系列,涵盖A*.Dijkstra.DP.BFS/DFS.红黑树.KMP.遗传.启发式搜索.图像 特征提取SIFT.傅立叶变换.Hash.快速排序.SPFA.快递选择SELECT等15个经典基础算法, 共计31篇文章,包括算法理论的研究与阐述,...

    数据结构与算法研究.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    软件开发中的十五个经典算法研究

    本经典算法研究系列,涵盖 A*.Dijkstra.DP.BFS/DFS.红黑树.KMP.遗传.启发式搜索.图像特征提取SIFT.傅立叶变换.Hash.快速排序.SPFA.快递选择 SELECT 等15 个经典基础算法,共计 31 篇文章,包括算法理论的研究与阐述...

    算法与数据结构-综合提升C++版.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    DataStructure-尚硅谷-数据结构与算法-数据结构.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    HHU 算法与数据结构课设--校园导航系统.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    数据结构值排序算法.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    极客时间-数据结构与算法-王争.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    十五个经典算法研究与总结、目录+索引.zip

    本经典算法研究系列,涵盖 A*.Dijkstra.DP.BFS/DFS.红黑树.KMP.遗传.启发式搜索.图像 特征提取 SIFT.傅立叶变换.Hash.快速排序.SPFA.快递选择 SELECT 等 15 个经典基础算法, 共计 31 篇文章,包括算法理论的研究与...

    数据结构与算法-小例子.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    数据结构--算法相关.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    数据结构和算法-Java版.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    数据结构与算法-学习笔记 Java 版.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    用Java实现基础数据结构,排序算法、经典算法以及leetcode刷题记录.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    学习数据结构和算法分析的一些实例,包括排序算法、搜索算法、递归、二叉树等等实例.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    数据结构-算法.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

Global site tag (gtag.js) - Google Analytics