黑马程序员技术交流社区

标题: 插入排序冒泡排序选择排序 希望对大家有所帮助 嘻嘻 [打印本页]

作者: guowei    时间: 2015-5-8 23:53
标题: 插入排序冒泡排序选择排序 希望对大家有所帮助 嘻嘻
/*
        选择排序:
                   按照从大到小排序
               
                1:首先拿角标0的数字去跟角标1对应的数字比较,符合条件就换位,接着在拿角标0去跟角标2对应的比较,以此类推
               
                2:换位操作定义一个第三方变量实现换位,比完一圈就得出角标为0的最大数字,
               
                        那么也就是说比较完当圈求出的符合条件的值在下一圈就用在参与比较了(在下一圈角标0不用再参与比较)
               
                3:接着在拿角标为1对应的数字在跟2角标对应的数字比较,1跟3,1跟4,以此类推,最后结果就比较出来了
               

        冒泡排序:
                         按照从大到小排序
               
                1: 角标相邻的两个元素比较,例如:0角标的元素跟1角标的元素比,符合条件就换位,
               
                2:        接着在拿角标1跟角标2比,符合条件就换位,以此类推
               
                3:        比完一圈就得出最后一个元素对应的最小值了,那么也就是说比较完当圈求出的符合条件的值在下一圈就用在参与比较了,
               
                4: 然后在拿角标0的元素跟1角标的元素比,角标1跟角标2比,2跟3...以此类推
                       
        插入排序:
                   按照从小到大排序
                1:首先先拿0角标A元素跟1角标B元素比 如果0角标A元素数字比1角标B的数字大就换位,否则就不换
               
                2:接着拿2角标C元素在跟1角标B元素比 如果2角标C的数字比1角标B元素的小  那就拿2角标C元素跟1角标B元素位置换
               
                3:在拿1角标的C元素跟0角标的A元素比 如果1角标的C元素比0角标的A元素大就不换
               
                4:接着在拿角标3的D元素跟角标2的B元素比  以此类推  后进来的元素跟前面进来的元素比 后进来的就就不换位
               
                5:否则就一直换  直到后进来的跟前进来的比较为假  或者比到最0角标结束
               
                6:总之一句话就是后面进来的元素符合规矩就一次次往前挪
*/

//下面演示的是插入排序

public class Test1
{
        public static void main(String[] args)
        {
                //定义一个数组
                int a[]={2,8,1,3,9,5};
                paixu(a);
                ss(a);
               
        }
        public static void paixu(int aa[])//插入排序方法
        {
                for (int a=1;a<aa.length ;a++ )
                {
                        int j=a-1;                //需要比较的角标,角标会根据根据while的运行的而变化
                        int key=aa[a];            //负责记住下面while循环需要依次比较的值
                        while (j>=0 && aa[j]>key)
                        {
                                aa[j+1]=aa[j];
                                aa[j]=key;
                                j=j-1;                //角标向左移动一位
                        }
                }
        }
        public static void ss(int aa[])   //这是一个打印数组功能 方便看结果
        {
                for (int a=0;a<aa.length ;a++ )
                {
                        System.out.print(aa[a]+"  ");
                }
        }
       
}







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