zoukankan      html  css  js  c++  java
  • 快速排序算法实现

    关于快速排序算法的思想,网上有很多介绍,这里不再解释,这里提供了一个Java类,读者可以把类潜入到自己的程序中,直接调用,免去了重新编写快速排序的过程。

    具体的Java代码如下:

     1 import java.util.*;
     2   class Quicksort{
     3         public static int partition(int array[],int low,int high){
     4             int q=array[low];                                            //把每一部分的最左边的值作为枢轴量去划分
     5             int m;
     6             while(low<high){
     7                 while(low<high && array[high]>q)high--;                  //从后向前
     8                 m=array[low];array[low]=array[high];array[high]=m;
     9                 while(low<high && array[low]<q)low++;                    //从前向后
    10                 m=array[low];array[low]=array[high];array[high]=m;
    11             }
    12             return low;                                                  //返回枢轴量的下标
    13         }
    14         
    15         public static void quicksort(int array[],int low ,int high){     //递归调用快速排序方法
    16             if(low<high){
    17                 int p=partition(array,low,high);                        //求出枢轴量的下标
    18                 quicksort(array,low,p-1);
    19                 quicksort(array,p+1,high);
    20             }
    21             
    22         }
    23     }
    24    
    25  public class Test{                                             //测试类
    26      public static void main(String[] args) {
    27           Scanner scan=new Scanner(System.in);
    28           int n=scan.nextInt();                                 //从键盘接受要排序的个数
    29           int array[]=new int[n];                               //下标从0开始存数据的数组
    30           System.out.print("排序前的数组:");                      
    31           for(int i=0;i<n;i++)                                 //输出排序前的数组
    32           { 
    33             array[i]=0+(int)(Math.random()*(100-0+1));         //随机生成0~100之间的整数
    34             System.out.print(array[i]+",");
    35           }
    36               System.out.println();
    37               Quicksort.quicksort(array,0,array.length-1);    //调用快速排序
    38               System.out.print("排序后的数组:");                 //输出排序结果
    39               for(int i=0;i<n;i++)
    40                   System.out.print(array[i]+",");
    41         }
    42  }
    View Code

    在程序执行后,从键盘上输入10,输出结果为:

    排序前的数组:39,92,64,2,52,89,16,32,37,22,
    排序后的数组:2,16,22,32,37,39,52,64,89,92,

  • 相关阅读:
    ComboBox联动DataGridview之Access表名联动表内容
    通过进程ID获取窗口句柄(微软)
    Excel操作类
    C# TextBox自动完成
    Mdi悬浮子窗体不超过主窗体边界
    Excel导入数据库_Excel2Sql
    C#连接SQL的增删改查
    用dynamic expression运行时访问dynamic object
    添加模式匹配
    对帐脚本语言的修改
  • 原文地址:https://www.cnblogs.com/guozhenqiang/p/5424670.html
Copyright © 2011-2022 走看看