A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹英 中级黑马   /  2013-3-19 22:51  /  1296 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹英 于 2013-3-21 00:34 编辑

请问下快速排序毕老师讲过没呢?为什么我下的视频没有讲快速排序的,麻烦各位大侠给偶说说快赖床排序怎么弄啊

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

6 个回复

倒序浏览
class  Day05_Demo2
{
        public static void main(String[] args)
        {
                int[] arr={6,4,3,9,2,5};

                System.out.print("排序前的顺序是");

                printArray(arr);

                selectSort(arr);

                System.out.print("\n"+"排序后的顺序是");

                printArray(arr);
        }
        //优化选择排序
        /*
                参数:要排序的数组
                返回值:void
        */
        public static void selectSort(int[] arr){

                //对数组进行排序
                for(int i=0;i<arr.length-1;i++){

                        int index=i;//用来记录最值的下标

                        for(int j=i+1;j<arr.length;j++){
                                       
                                if(arr[index]>arr[j]){
                                        index=j;        //让index一直记录的是最值的下标.
                                }               
                        }

                        //将i位置上的元素与index位置上的元素进行交换

                        if(index!=i){        //如果当前要交换的元素的值正好在应该存在的位置,那么不需要进行交换                       
                                int temp=arr[i];
                                arr[i]=arr[index];
                                arr[index]=temp;                       
                        }

                }
               
        }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
这个老毕好像真没说过,百度一下快速排序的算法,自己写吧..我就这么干的.莫非你在做基础测试题,,?
回复 使用道具 举报
选择排序(开发)
                       
                        用数组中左边元素与右边所有元素依次比较,如果满足条件,进行交接,
                        最值出现在左边。

                        代码实现
                        public static void selectSort(int[] arr){
                                //对数组进行排序
                                for(int i=0;i<arr.length-1;i++){
                                //控制数组中的每一个元素下标,要比较的那个元素符号                                       
                                        for(int j=i+1;j<arr.length;j++){
                                        //操作与i元素比较的所有元素下标                                               
                                                if(arr[i]<arr[j]){
                                                        int tmp=arr[i];
                                                        arr[i]=arr[j];
                                                        arr[j]=tmp;
                                                }
                                               

                                        }
                                }

                        }

冒泡排序(笔试)
                原理:相邻的两个元素依次进行比较,当所有元素比较一次后,产生的最值就出现在数组的最右边
                     下次在将其它的元素进行比较,最值出现在比较的这些元素的最右边。所有的元素全都比较完成
                         后数组中的元素就排序。
                         //冒泡排序
                public static void bubbleSort(int[] arr){
                       
                        for(int i=0;i<arr.length;i++){ //只是控制比较的次数
               
                                for(int j=0;j<arr.length-1-i;j++){  //-1目的是为了控制越界  -i:为了控制最右边的最值不在参与比较。
                                       
                                        if(arr[j]>arr[j+1]){ //相邻元素进行比较

                                                //两个元素进行交换。       
                                                int tmp=arr[j];
                                                arr[j]=arr[j+1];
                                                arr[j+1]=tmp;
                                        }
                                }
                        }
                }

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 虽然问的是快速排序

查看全部评分

回复 使用道具 举报
若还有问题,请继续追问;没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
/**
* 快速排序
* @author **
* date : 2012/11/9
*/

package com.ccsu.arithmetic.sort;

public class QuickSort {
        /**
         * @param array
         * @param p
         * @param q
         * @return 划分位置
         */
        public static int partition(int array[], int p, int q) {
                int x = array[p];

                int i = p;
                for (int j = p + 1; j <= q; j++) {
                        if (array[j] < x) {
                                i += 1;
                                swap(array, i, j);
                        }
                       

                }
                swap(array, p, i);
                return i;
        }

        // 交换数据
        public static void swap(int[] array, int m, int n) {
                int temp = array[m];
                array[m] = array[n];
                array[n] = temp;
        }

        public static void quickSort(int array[], int p, int q) {
                if (p < q) {
                        int r = partition(array, p, q);
                        quickSort(array, p, r - 1);
                        quickSort(array, r + 1, q);
                }
        }

        public static void main(String[] args) {
                int[] array = new int[] { 2, 1, 3, 4, 5, 9, 7, 6 };
                quickSort(array, 0, array.length - 1);
                for (int i : array) {
                        System.out.print(i + "  ");
                }
        }

}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
若还有问题,请继续追问;没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马