`

quicksort

阅读更多
import java.util.*;
import javax.swing.*;

class Testquicksort{
		
		static int div(int a[],int b,int e){
				int i,j,k,m;
				m=a[b];
				while(true){
					for(i=b+1;i<=e && a[i]<=m;i++){}
					for(j=e;a[j]>m;j--){}
					if(i>=j)break;
					k=a[i];
					a[i]=a[j];
					a[j]=k;
				}
				k=a[j];
				a[j]=a[b];
				a[b]=k;
				
				return j;//因为j<i所以j不可能为e  最大只能为e-1,如{2,1,1,1,1,1,1,3}
				//if {2,3,3,3,3,3,3}此时j=0;  再次quicksort时会因为if(b<e)  0<-1 跳出递归
			}
		
		static void quicksort(int a[],int b,int e){
				if(b<e){
						int m=div(a,b,e);
						quicksort(a,b,m-1);
						quicksort(a,m+1,e);
					}
			}
		
		
		public static void main(String[] args){
			int num=10000;
			int[] a=new int[num];
			int[] b=new int[num];
			Random r=new Random();
			//给a数组 b数组同样的赋值 并打印
			for(int i=0;i<a.length;i++){
					a[i]=r.nextInt(num)+1;
					b[i]=a[i];
					System.out.print(a[i]+" ");
				}
				System.out.println();
				for(int i=0;i<b.length;i++){
					System.out.print(b[i]+" ");
				}
				System.out.println();
				
			//a数组进行quicksort	
			long atime=System.currentTimeMillis();
			quicksort(a,0,num-1);
			atime=System.currentTimeMillis()-atime;
				
			//打印排序后的a数组
			System.out.println();
			for(int i=0;i<a.length;i++){
					System.out.print(a[i]+" ");
				}
				
			
			
			//b数组进行selectsort
			long btime=System.currentTimeMillis();
			for(int z=0;z<b.length;z++){
					int min=100000000,mi=0,t;
					for(int y=z;y<b.length;y++){
							if(b[y]<min){
									min=b[y];
									mi=y;
								}
						}
						t=b[z];
						b[z]=b[mi];
						b[mi]=t;
				}
				btime=System.currentTimeMillis()-btime;		
			
			//打印排序后的b数组
				System.out.println();
				System.out.println();
				
				for(int i=0;i<b.length;i++){
					System.out.print(b[i]+" ");
				}
				
				
				//输出时间
				System.out.println("\nquicksort: "+atime+" ms");
				System.out.println("\nselectsort: "+btime+" ms");
				
				System.out.println("\n对"+num+"位数进行排序时2种算法时间差为: "+(btime-atime)+" ms");
		}
		
	}

 

分享到:
评论

相关推荐

    POJ2299-Ultra-QuickSort

    【标题】"POJ2299-Ultra-QuickSort"是北京大学在线判题系统POJ上的一道编程题目,其主要涉及的算法是快速排序(Ultra-QuickSort)。快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。它的基本思想是采用...

    QuickSort【快速排序C语言版本】

    在提供的压缩包文件"QuickSort"中,可能包含了以下内容: - `quick_sort.c`:快速排序算法的C语言源代码文件,展示了如何在C语言环境中实现快速排序的函数和主程序。 - `quick_sort.h`:可能包含了快速排序函数的...

    MergeSortL && QuickSort

    编写程序实现归并排序算法 MergeSortL 和快速排序算法 QuickSort;

    算法导论Lecture 4:Quicksort

    快速排序(Quicksort)是一种高效的排序算法,它由C.A.R. Hoare在1960年提出。快速排序采用的是分治法的策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。 快速排序算法的基本步骤是:从...

    quicksort_matlab_快速排序

    资源名:quicksort_matlab_快速排序 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定经验的...

    数据结构QuickSort实验

    适用于大学数据结构的QuickSort实验提交

    QuickSort快速排序的实现

    QuickSort快速排序的实现 [Qsort类] 使用C++模版,可实现自定义类型的排序方式 同时通过折半查找检索元素 附带控制台演示 欢迎指正和建议 程序详细描述可见:...

    QuickSort java最快的排序

    QuickSort java最快的排序 比冒泡快得不止一点 更nb 八大排序之一

    quicksort.zip

    在"quicksort.zip"压缩包中的"quicksort-master"目录下,可能包含了C++和Python两种语言实现快速排序的源代码文件。通过阅读和分析这些代码,你可以更深入地理解快速排序的原理和实现细节。对于初学者,这是一个很好...

    QuickSort_quicksort代码_快速排序_

    在压缩包中的`QuickSort`文件可能包含了快速排序的完整实现,包括主函数和其他辅助函数,用于测试和展示快速排序的运作。通过阅读和理解这些代码,你可以更好地掌握快速排序的细节,并能够将其应用到自己的项目中。

    快速排序及其改进方法的c++ 代码 quicksort.cpp

    代码中包含了快速排序这个经典算法的代码,并且给出了改进后的快速排序的代码,代码中同时包含了两个测试用例。测试命令:g++ quicksort.cpp -o quicksort ./quicksork

    快速排序 - QuickSort - JAVA实现

    public class QuickSort { public static void quickSort(int[] arr) { if (arr == null || arr.length ) { return; } quickSort(arr, 0, arr.length - 1); } public static void quickSort(int[] arr...

    快速排序JAVA实现 - QuickSort.java

    public class QuickSort { public static void quickSort(int[] arr) { if (arr == null || arr.length ) { return; } quickSort(arr, 0, arr.length - 1); } public static void quickSort(int[] arr...

    MIPS Assembly quicksort 源码

    在提供的文件中,`quicksort.c`可能是C语言实现的快速排序算法,而`quicksort.s`则是该C代码对应的MIPS汇编语言版本。C语言版本通常更易于理解和编写,而汇编语言版本则更接近底层硬件,性能可能更高,但编写和调试...

    QuickSort算法的实现;最小生成树;多段图,n皇后,货郎担问题的算法及源代码

    "QuickSort算法的实现、最小生成树、多段图、n皇后、货郎担问题的算法及源代码" 本文将对QuickSort算法、最小生成树、多段图、n皇后、货郎担问题的算法进行详细的讲解,并提供相应的源代码。 QuickSort算法 ...

    快速排序——quicksort

    void quicksort(int A[],int p,int r) { int q; if(p) { q=partition(A,p,r); quicksort(A,p,q-1); quicksort(A,q+1,r); } } /****************************************************/

    排序算法-基于C语言实现的排序算法之QuickSort实现.zip

    - 上述代码中,`quickSort`函数是主排序函数,`partition`函数用于分区,`swap`函数用于交换元素。 4. **性能分析**: - 平均情况下,快速排序的时间复杂度为O(n log n),最坏情况下(如输入已排序或完全逆序)为...

    分治法快速排序算法QuickSort

    void quickSort(int arr[], int left, int right) { if (left ) { // 如果子区间至少有两个元素 int pivotIndex = partition(arr, left, right); // 执行分区操作 quickSort(arr, left, pivotIndex - 1); // 对左...

    PHP-基于php实现的快速排序算法-QuickSort.zip

    return array_merge(quickSort($left), array($pivot_key =&gt; $pivot), quickSort($right)); } ``` 在这个代码中,我们首先检查数组的长度,如果长度小于2,说明数组已经是有序的,直接返回。然后选择第一个元素...

Global site tag (gtag.js) - Google Analytics