选择法排序和冒泡法排序

一、思路

1. 选择法排序

    1. 把第一位和其他所有位比较,只要比第一位小的,就换到第一个位置来,比较数组长度-1次后,第一位就是最小的
            2. 再从第二位和剩余的其他所有位进行比较,只要比第二位小,就换到第二个位置来,比较完后,第二位就是第二小的
            3. 以此类推

2. 冒泡法排序

    1. 从第一位开始,把相邻两位进行比较,如果前面的比后面的大,就把大的数据交换在后面,比较数组长度-1次后,最后一位就是最大的
            2. 重复步骤1,但不用比较最后一位,相当于对除去最后一位的其它数的数组做冒泡排序
            3. 以此类推


二、程序

public class Test {
	public static void main(String[] args) {		
        int[] a = new int[]{18,85,46,62,9,37};
      //排序前先把内容打印出来
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");	//换行
        /* 选择法排序
         * 	1. 把第一位和其他所有位比较,只要比第一位小的,就换到第一个位置来,比较数组长度-1次后,第一位就是最小的
			2. 再从第二位和剩余的其他所有位进行比较,只要比第二位小,就换到第二个位置来,比较完后,第二位就是第二小的
			3. 以此类推
         */
      //最后一位不需要和其它位比较,所以外部循环到数组长度-1
        for (int j = 0; j < a.length-1; j++) {
        	for (int i = j+1; i < a.length; i++) {
    			if(a[i] < a[j]) {
    				int temp = a[j];
    				a[j] = a[i];
    				a[i] = temp;		
    			}
    		}
		}
        
        for (int i = 0; i < a.length; i++) {
        	System.out.print(a[i] + " ");
		}
        
        System.out.println(" ");	//换行
        
        /*冒泡法排序
         *	1. 从第一位开始,把相邻两位进行比较,如果前面的比后面的大,就把大的数据交换在后面,比较数组长度-1次后,最后一位就是最大的
 			2. 重复步骤1,但不用比较最后一位,相当于对除去最后一位的其它数的数组做冒泡排序
			3. 以此类推
         */
        for (int j = 0; j < a.length; j++) {
        	//外部第一次循环,内部循环需比较数组长度-1次,将最大位排到最后一位,外部第二次循环,内部循环需比较(原数组长度-1)-1次
        	 for (int i = 0; i < a.length-j-1; i++) {
        		 if(a[i] < a[i+1]) {
     				int temp = a[i+1];
     				a[i+1] = a[i];
     				a[i] = temp;
     			}
     		}
		}
        for (int i = 0; i < a.length; i++) {
        	System.out.print(a[i] + " ");
		}
	}	
}

三、结果

四、参考文章

1. https://how2j.cn/k/array/array-sort/282.html

猜你喜欢

转载自blog.csdn.net/babo18/article/details/113971957