java數組4種排序方法練習

/***
	 * 插入排序法
	 * 第i個數與(i-1)比較,如果第i個數小與第(i-1)則換位置,再判斷左邊是否有值,如果有值則再比較
	 * 
	 * 每個數字都與他相鄰的左邊進行比較,直到排序結束
	 */

	private void charu2() {
		int[] a={1,3,9,5,4,3};
		for (int i = 1; i < a.length; i++) {
			for (int j = i; j >0; j--) {
				if (a[j]<a[j-1]) {
					int temp;
					temp= a[j-1];
					a[j-1]=a[j];
					a[j] =temp;
				}else{
					break;
				}
			}
			System.out.print(a[i]);
			
		}
		System.out.println();
		for (int i :a) {
			System.out.println(i);
		}

	}
	
	
	
	/***
	 * 選擇排序法,每次循環遍歷出最小的數,放到對應的位置
	 * 
	 * 簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,
	 * 將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,
	 * 將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,
	 * 將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。
	 */
	private void xuanze() {
		int[] a = {9,2,8,7,1};
		
		for (int i = 0; i < a.length-1; i++) {
			int min=i;
			for (int j = i+1; j < a.length; j++) {
				System.out.println("j:"+j);
				if (a[min]>a[j]) {
					
					min = j;
				}
			}
			if (min!=i) {
				int temp;
				temp=a[i];
				a[i] = a[min];
				a[min]=temp;
			}
		}
		for(int i:a){
			System.out.println(i);
		}

	}
	
	
	/**
	 * 快速排序-利用Arrays中的sort方法,從小到大的順序排序
	 */
	private void kuaisu() {
		int[] a = { 1, 9, 5, 4 };
		Arrays.sort(a);
		for (int i : a) {
			System.out.println(i);
		}

	}

	/***
	 * 冒泡排序 ,相鄰的兩個數進行比較,第一個數第二個數後就換位置,如果不大就不用換,然後執行下次內循環,內循環執行完成後執行外循環
	 */
	public void mao() {
		int[] a = { 1, 9, 7, 2 };
		int min = 0;
		for (int i = 0; i < a.length; i++) { // 獲取循環的次數,以及第一個數的內容
			System.out.println("i:" + a[i]);
			for (int j = 0; j < a.length - 1; j++) {// 比較相憐的兩個數
				if (a[j] > a[j + 1]) { // 如果第一個數比第二個數大,則 第一個數和第二個數換位置
					min = a[j + 1];
					a[j + 1] = a[j];
					a[j] = min;

				}
			}

		}
		for (int i = 0; i < a.length; i++) {
			System.out.println(a[i]);
		}

	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章