黑马程序员技术交流社区

标题: 冒泡排序怎么做啊? [打印本页]

作者: boboyuwu    时间: 2016-1-19 22:47
标题: 冒泡排序怎么做啊?
求大神来。。。。。。。。。。。。。。。。lzm  shi   SB

作者: l845590743    时间: 2016-1-19 22:47
class Noname2
{
        public static void main(String[] args)
        {
                int[] arr = {1,5,9,8,4,3,7};
                System.out.print("冒泡排序前:");
                printArray(arr);
                bubbleSort(arr);
                System.out.print("冒泡排序后:");
                printArray(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;
                                }
                        }
                        System.out.print("第"+(i+1)+"轮排序后:");
                                printArray(arr);
                }
        }
        public static void printArray(int[] arr){
                for (int i=0; i<arr.length; i++)
                {
                        System.out.print(arr[i]+" ");
                }
                System.out.print("\n");
        }
}
作者: 纤路    时间: 2016-1-21 23:31
l845590743 发表于 2016-1-19 22:47
class Noname2
{
        public static void main(String[] args)

冒泡排序是交换排序中一种简单的排序方法。它的基本思想是对所有相邻记录的关键字值进行比效,如果是逆顺(a[j]>a[j+1]),则将其交换,最终达到有序化。其处理过程为:
(1)将整个待排序的记录序列划分成有序区和无序区,初始状态有序区为空,无序区包括所有待排序的记录。  (2)对无序区从前向后依次将相邻记录的关键字进行比较,若逆序将其交换,从而使得关键字值小的记录向上"飘浮"(左移),关键字值大的记录好像石块,向下“堕落”(右移)。  每经过一趟冒泡排序,都使无序区中关键字值最大的记录进入有序区,对于由n个记录组成的记录序列,最多经过n-1趟冒泡排序,就可以将这n个记录重新按关键字顺序排列
作者: 新手上路    时间: 2016-3-15 11:26
纤路 发表于 2016-1-21 23:31
冒泡排序是交换排序中一种简单的排序方法。它的基本思想是对所有相邻记录的关键字值进行比效,如果是逆顺 ...

最多经过n-1趟冒泡排序  是怎么出来的
作者: 新手上路    时间: 2016-3-15 11:27
冒泡排序
*/
class Arrsort
{//main入口中调用函数测试
        public static void main(String[] args)
        {
                int[] arr={2,6,1,5,4,9};
                arrPrint(arr);//打印原数组
                maopaoSort(arr);//调用maopaoSort(int[] arr)方法
                arrPrint(arr);//打印排序后的新数组       
        }
        //定义一个arrPrint(int[] arr)的功能,打印输出数组内容
        public static void arrPrint(int[] arr)
        {
                System.out.print("{");
                for(int i=0;i<arr.length;i++)
                {
                        if(i!=arr.length)
                                System.out.print(arr[i]+", ");
                        else
                                System.out.print(arr[i]+"}");
                }
                System.out.println();
        }
        //定义一个maopaoSort(int[] arr)的功能,进行冒泡排序
        public static void maopaoSort(int[] arr)
        {
                for(int i=0;i<arr.length-1;i++)
                {
                        for(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;
                                }
                        }
                }
        }
}




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