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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© n361204357 中级黑马   /  2015-7-25 00:08  /  427 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 n361204357 于 2015-7-25 00:11 编辑

import java.util.*;
class i1
{
        public static void main(String[] args)
        {
                int[] arr=new int[]{1,4,2,8,9,7};
               
                //排序前
                daYin(arr);
                //排序
                maoPao(arr);
                //xuanZe(arr);
                //Arrays.sort(arr);//内置的排序方法,需要导包。
                //排序后
                daYin(arr);
        }
       
        public static void maoPao(int[] arr) //冒泡排序:相邻的两个数比较。
        {
                for(int x=0;x<arr.length-1;x++)
                {
               
                //因为第一圈结束后,最值已经出现在最后位,所以-1,避免角标越界。
                //为什么会越界,因为y为最后一个数时,y+1就超出了角标
                //-x是因为每轮减少了一次比较。
               
                        for(int y=0;y<arr.length-x-1;y++)//跟选择排序不同的是,初始值是0,每轮都要从0角标开始比较。
                        {
                                //相邻的两个数比较
                                if(arr[y+1]>arr[y])//第一圈结束后,最值出现在最后位
                                {
                                        /*
                                        int temp=arr[y];
                                        arr[y]=arr[y+1];
                                        arr[y+1]=temp;
                                        */
                                        zhiHuan(arr,y,y+1);
                                }
                        }
                }
       
        }
        /*
        public static void xuanZe(int[] arr)//选择排序,原理和打印三角形类似,上尖改条,下尖改初,选择尖朝下
        {
                for(int x=0;x<arr.length-1;x++)
                {
                        for(int y=x+1;y<arr.length;y++)
                        {
                                if(arr[x]<arr[y])//第一圈后最值出现在头角标的位置上
                                {
                                        int temp=arr[x];
                                        arr[x]=arr[y];
                                        arr[y]=temp;
                                }
                        }
                }
        }
        */
        public static void daYin(int[] arr) //定义一个数组排序显示的方法
        {
                System.out.print("(");
                //遍历数组,用到for循环,把数组元素一个一个打印出来
                for(int x=0;x<arr.length;x++)
                {
                        if(x!=arr.length-1)//如果是最有一个数,那么最后一个数不要加','。
                        {
                                System.out.print(arr[x]+",");
                        }
                        else
                                System.out.print(arr[x]);
                }
                System.out.println(")");
               
        }
        public static void zhiHuan(int[] arr,int b,int c)
                //无论是哪个排序方法都需要用到置换方法,定义一个方法,方便置换。
        {
                int a=arr;
                arr=arr[c];
                arr[c]=a;
        }
}

7 个回复

正序浏览
比较基础的两个排序方法,好好学习下!
回复 使用道具 举报
江峰 中级黑马 2015-7-28 22:50:15
7#
好,好赞赞
回复 使用道具 举报
0基础飘过
回复 使用道具 举报
冒泡排序,选择排序
回复 使用道具 举报
同志还需要努力啊
回复 使用道具 举报
学习下,刚看到面向对象
回复 使用道具 举报
算是最基本的2种排序算法吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马