黑马程序员技术交流社区

标题: 冒泡排序,选择排序---面试必考! [打印本页]

作者: continuer    时间: 2015-12-21 23:28
标题: 冒泡排序,选择排序---面试必考!
public class Dem {
        public static void main(String[] args) {
                int[] arr = {6,5,4,3,2,1};
                prinArray(arr);                                                    //排序前
                bubbleSort(arr);                                                // 冒泡排序
                 prinArray(arr);                                                 //排序后
                System.out.println("----------------");             //换行
                 prinArray(arr);                                                //排序前
                selectSort(arr);                                               //选择排序
                prinArray(arr);                                                //排序后
               
        }
        //冒泡排序
        public static void bubbleSort(int[] arr){
                for (int i = 0; i < arr.length-1; i++) {
                        for (int j = 0; j <arr.length-i-1; j++) {
                                if(arr[j]>arr[j+1])
                                {
                                        int temp = arr[j];
                                        arr[j] =arr[j+1];
                                        arr[j+1] = temp;
                                }
                        }
                }
               
        }
        //选择排序
        public static void selectSort(int[] arr){
                for (int i = 0; i < arr.length; i++) {
                        for (int j = i+1; j < arr.length; j++) {
                                if(arr[i]>arr[j])
                                {
                                        int temp = arr[i];
                                        arr[i] =arr[j];
                                        arr[j] = temp;
                                }
                        }
                       
                }
        }
           //遍历数组
        public static void prinArray(int[] arr){         
                for (int i = 0; i < arr.length; i++) {
                        System.out.print(arr[i]+" ");
                }
        }
}



作者: Hi.。    时间: 2015-12-22 10:55
本帖最后由 Hi.。 于 2015-12-22 11:00 编辑

选择排序的 排完倒数第二个,最后 一个就自动出来不用再排了
所以可以 for (int i = 0; i < arr.length-1 ; i++)for (int j = 0; j < arr.length -1 ; j++)

作者: guxing1213    时间: 2015-12-22 11:30
那我就在你这里练习一遍,{:3_46:}
class Demo
{
        public static void main(String[] args)
        {
                int[] arr = {23,21,56,12,4,7};
               
                printArray(arr);
                selectSort(arr);
                printArray(arr);
                System.out.println(".........");

                bubbleSort(arr);
                printArray(arr);
        }

        //选择排序
        public static void selectSort(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])
                                {
                                        swap(arr,x,y);
                                }
                        }
                }
        }

        //冒泡排序
        public static void bubbleSort(int[] arr)
        {
                for (int x=0; x<arr.length-1; x++)
                {
                        for (int y=0; y<arr.length-x-1; y++)
                        {
                                if(arr[y]>arr[y+1])
                                {
                                        swap(arr,y,y+1);
                                }
                        }
                }
        }

        //位置置换
        public static void swap(int[] arr,int a,int b)
        {
                int temp = arr[a];
                arr[a] = arr[b];
                arr[b] = temp;
        }

        //遍历数组
        public static void printArray(int[] arr)
        {
                System.out.print("[");
                for (int x=0; x<arr.length; x++)
                {
                        if (x!=arr.length-1)
                                System.out.print(arr[x]+",");
                        else
                                System.out.println(arr[x]+"]");
                       
                }
        }
}
作者: song881224    时间: 2015-12-22 12:11
谢谢分享,顶一个
作者: continuer    时间: 2015-12-22 22:28
  这个一定要会的最好能用手写出来
作者: 隔壁老猫    时间: 2015-12-23 00:08
谁说必考了 = = 你别闹
作者: Jerson_ZF    时间: 2015-12-23 08:20
必考????面试必考吗?
作者: chengz    时间: 2015-12-23 20:15
哪里必考?

作者: lixy    时间: 2015-12-23 21:47
不是必考吧,不过几率挺大
作者: anuo    时间: 2015-12-23 22:33
只要把思想理解了,其实代码还是挺好实现的
作者: 洪志豪1994    时间: 2015-12-23 22:36
这个还是要要求手写呢
作者: continuer    时间: 2015-12-23 22:51
最好能手写出来,点招考的几率很大
作者: continuer    时间: 2015-12-23 22:52
还有io流的是每次都必考的,今天那个老师都说了,把io流多复习
作者: icm    时间: 2015-12-23 23:03
这种排序挺锻炼个人逻辑的。。
作者: 愿随风丶飘雪    时间: 2015-12-23 23:06
恩恩,最经典的两种排序方法
作者: 四夕    时间: 2015-12-24 00:57
学习了......
作者: 谢光智    时间: 2015-12-24 11:44
我来学习学习~
作者: 云鱼    时间: 2015-12-24 20:24
今天弄了半天才弄出来,考试要手写
作者: DayBreak    时间: 2015-12-24 21:57
感觉不会考那么简单啊
作者: continuer    时间: 2015-12-25 22:51
云鱼 发表于 2015-12-24 20:24
今天弄了半天才弄出来,考试要手写

嘿嘿,这个必须要熟练哦,先分析清楚流程,然后在写 就简单了
作者: continuer    时间: 2016-1-7 23:29
点招了,考了冒泡排序
作者: fagug    时间: 2016-1-8 15:07
思想流程都比较清楚,就是自己写的时候写的好慢,总要修修改改的,郁闷。。。。。。。。。
作者: continuer    时间: 2016-1-16 12:12
多敲几遍就好了
作者: rushing    时间: 2016-1-16 12:16
好好看看。。。。先记下了
作者: wxw19910324    时间: 2016-1-16 13:57
视频里面都有 毕老师的
作者: ContainsM    时间: 2016-1-16 14:14
选择排序不应该是  比较、记录索引、最后交换吗?
作者: 晓寒轻    时间: 2016-1-16 15:39
写注释。。。。




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