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));
        }
    }
  • 相关阅读:
    KNN分类算法补充
    KNN分类算法实现手写数字识别
    KNN分类算法及python代码实现
    数据挖掘与机器学习介绍
    安装Numpy方法
    windows下的python环境搭建(python2和python3不兼容,python2用的多)
    用户画像知识
    Mahout介绍和简单应用
    协同过滤的实现步骤
    推荐系统基础知识
  • 原文地址:https://www.cnblogs.com/jialin1402/p/7397557.html
Copyright © 2011-2022 走看看