zoukankan      html  css  js  c++  java
  • java快速排序

    代码如下:

    public class QuickSort {
        //交换data数组中i和j两处索引的元素
        private static void swap(DataWrap[] data, int i, int j) {
                DataWrap tmp = data[i];
                data[i] = data[j];
                data[j] = tmp;
                
        }
        //对data数组中从start-end索引范围的子序列进行处理,使之满足所有小于分界值得放在左边
        //所有大于分界值得放在右边
        private static void subSort(DataWrap [] data,int start,int end)
        {
            //需要排序
            if(start < end)
            {
                //以第一个元素作为分界值
                DataWrap base = data[start];
                //i从左边开始搜索,搜索大于分界值的元素的索引
                int i = start;
                //i从左边开始搜索,搜索小于分界值的元素的索引
                int j = end +1;
                while(true)
                {
                    //找到大于分界值的元素的索引,或者i已经找到了end处
                    while(i < end && data[++i].compareTo(base) <=0);
                    //找到小于分界值的元素的索引,或者j已经找到了start处
                    while(j > start && data[--j].compareTo(base) >=0);
                    if(i < j)
                    {
                        swap( data, i, j);
                    }
                    else
                    {
                        break;
                    }
                }
                swap(data, start, j);
                //递归左子序列
                subSort(data, start, j-1);
                //递归右子序列
                subSort(data, j+1, end);
            }
            
            
        }
        public static void quickSort(DataWrap [] data)
        {
            subSort(data, 0, data.length-1);
        }
        public static void main(String[] args) {
            DataWrap[] data = {
                    new DataWrap(21, ""),
                    new DataWrap(30, ""),
                    new DataWrap(49, ""),
                    new DataWrap(30, ""),
                    new DataWrap(16, ""),
                    new DataWrap(9, "")
            };
            System.out.println("排序之前:
    " + java.util.Arrays.toString(data));
            quickSort(data);
            System.out.println("排序之后:
    " + java.util.Arrays.toString(data));
        }
    }
  • 相关阅读:
    GKB版本与UTF-8版本有什么区别(转载)
    如何与项目开发方对接
    php查询数据集的几种方式(mysql_unbuffered_query()与mysql_query()的区别)
    怎么去执行文件读写 ?
    Python中(集合、元祖、字典)等词汇基本语法
    Python入门~list 相关语法
    Python入门-基础语法实践
    newman + postman 环境搭建
    萌新驾到,请多多关照!
    切片、非空即真
  • 原文地址:https://www.cnblogs.com/jialin1402/p/7397557.html
Copyright © 2011-2022 走看看