黑马程序员技术交流社区

标题: 黑马基础测试题一道:关于排序,求拍砖 [打印本页]

作者: ksh    时间: 2015-9-17 22:38
标题: 黑马基础测试题一道:关于排序,求拍砖
本帖最后由 ksh 于 2015-9-17 22:41 编辑

package com.itheima;

import java.util.Arrays;

/**
*
* 【黑马程序员训练营基础测试】
*  2、 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。
*
* 第一种:Arrays类里提供的由小到大排序
* 第二种:选择排序
* 第三种:冒泡排序
*
*/
public class Test2 {
        
                public static void main(String[] args) {
                        int[] arr = new int[] { 12, 31, 53, 11, 7, 101 };
                        
                        //打印原数组
                        System.out.println("原数组为:");
                        print(arr);
                        
                        // 方法一:调用Arrays里的方法由小到大排序:
                        System.out.println("方法一:调用Arrays里方法由小到大排序:");
                        Arrays.sort(arr);
                        print(arr);
                        
                        //方法二: 调用自定义的选择排序方法:
                        System.out.println("方法二:选择排序");
                        selectSort(arr);
                        print(arr);
                        
                                       
                        //方法三: 调用自定义的冒泡排序方法:
                        System.out.println("方法三:冒泡排序");
                        bubbleSort(arr);
                        print(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]) {
//                                                int temp =arr[x];
//                                                arr[x]=arr[y];
//                                                arr[y]=temp;
                                                
                                                //调用swap方法交换数组中元素的位置
                                                swap(arr,x,y);
                                        }
                                }
                        }
                }
        
        
                /*定义冒泡排序:外循环确定每次循环的结束位置,每一次循环结束,最大索引值对应的是该次循环的最大值。
                 * 内循环的相邻元素进行比较,较大的元素在较大的索引值处,否则交换位置。
                 * 每次循环都能保证该次循环的最大值在最大索引的位置
                 *
                 */
               
        public static void bubbleSort(int[] arr) {
                        for (int x = arr.length-1; x >0; x--) {
                                for (int y = 0; y < x; y++) {
                                        if (arr[y] > arr[y + 1]) {
                                                int temp = arr[y];
                                                arr[y]= arr[y+1];
                                                arr[y+1]=temp;
                                        }
                                }
                        }
                }
        
        //定义swap方法,交换两个数组的位置。
        private static void swap(int[] array, int i, int j) {
                        int temp = array;
                        array = array[j];
                        array[j] = temp;
                        
                }
               
        //定义方法print,将数组输出在控制台。
                public static void print(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] + "]");
                        }
                }

}







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