黑马程序员技术交流社区

标题: 个人总结的两种排序方法 [打印本页]

作者: n361204357    时间: 2015-7-25 00:08
标题: 个人总结的两种排序方法
本帖最后由 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;
        }
}
作者: 蔡锐    时间: 2015-7-25 08:36
算是最基本的2种排序算法吧
作者: aa233192133    时间: 2015-7-25 09:08
学习下,刚看到面向对象
作者: 1556455422    时间: 2015-7-25 09:16
同志还需要努力啊
作者: Apol    时间: 2015-7-25 10:14
冒泡排序,选择排序
作者: 虚心的小菜    时间: 2015-7-28 22:44
0基础飘过
作者: 江峰    时间: 2015-7-28 22:50
好,好赞赞
作者: 逆光奔跑    时间: 2015-7-28 22:55
比较基础的两个排序方法,好好学习下!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2