黑马程序员技术交流社区

标题: 程序员必知基础两大排序! [打印本页]

作者: 毛豆豆    时间: 2015-8-11 11:00
标题: 程序员必知基础两大排序!
还有其他更快的排序方法,但是有点难理解。
这两种是初学者最好理解的,刚刚敲了一遍 分享给大家。

/*定义一个方法,对数组进行排序,先来简单的 选择和冒泡
  选择:
  用第一个数和其他的数比较,如果第一个数比其他数大,那么和第一个数交换位置,
  否则,不交换,之后,继续用第一个数和之后的数比较,以此类推之后,会把最小的
  数放到第一位,之后再拿第2个数比较,以此类推。

  冒泡:
  第一个数和第二个数比较,如果第一个数大于第二个数,则交换位置,否则,不交换,
  继续拿第2个数和第3个数比较,以此类推,会把最大的数放到最后。之后,最后的的数
  就不用参与运算,以此类推。
*/
class Test2
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
                int[] arr = {2,1,4,7,3,5,8};
               
                xzpx(arr);
                printArray(arr);
                System.out.println("---------------------");
                mppx(arr);
                printArray(arr);
        }

        public static void xzpx(int[] arr){
                for(int a = 0;a < arr.length-1; a++){
                        for(int b = a+1;b< arr.length;b++){
                                if(arr[a]>arr[b]){
                                        int temp = arr[a];
                                        arr[a] = arr[b];
                                        arr[b] = temp;
                                }
                        }
                }
        }
        public static void mppx(int[] arr){
                for(int a = 0;a < arr.length-1;a++){
                        if(arr[a]>arr[a+1]){
                                int temp = arr[a];
                                arr[a] = arr[a+1];
                                arr[a+1] = temp;       
                        }
                }
        }
        public static void printArray(int[] arr){
                System.out.print("[ ");
                for(int a = 0;a < arr.length;a++){
                        System.out.print(arr[a]+" ");
                }
                        System.out.println("]");
        }
}



作者: T-l-H、小生    时间: 2015-8-11 11:10
话说,楼主你的那个冒泡排序是不是少了点啥?
作者: 毛豆豆    时间: 2015-8-11 11:39
失误失误
冒泡排序错了。。

以下是改过来的冒泡

public static void mppx(int[] arr){
                for(int a = 0; a<arr.length;a++){
                        for(int b= 0;b<arr.length-1-a;b++){
                                if(arr[b]>arr[b+1]){
                                        int temp = arr[b];
                                        arr[b] = arr[b+1];
                                        arr[b+1] = temp;       
                                }
                        }
                }
        }
作者: kenfans    时间: 2015-8-11 12:17
应该说什么
作者: 黄蒙    时间: 2015-8-11 12:36
这些对于小数据还好用- -多一点的数据还是用快排省资源。。




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