java中數組的冒泡排序和簡單選擇排序

一,冒泡排序

原理:比較兩個相鄰的元素,將值大的元素交換至右端。

思路:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一趟步驟,直至全部排序完成。

舉例說明:要排序數組:int[] arr={6,3,8,2,9,1}; 

/*
 * 冒泡排序
 */
public class BubbleSort {
  public static void main(String[] args) {
    int[] arr={6,3,8,2,9,1};
    System.out.println("排序前數組爲:");
    for(int num:arr){
      System.out.print(num+" ");
    }
    for(int i=0;i<arr.length-1;i++){//外層循環控制排序趟數
      for(int j=0;j<arr.length-1-i;j++){//內層循環控制每一趟排序多少次
        if(arr[j]>arr[j+1]){
          int temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    } 
    System.out.println();
    System.out.println("排序後的數組爲:");
     for(int num:arr){
       System.out.print(num+" ");
     } 
  }
 }

二,選擇排序

原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最後,直到全部記錄排序完畢。也就是:每一趟在n-i+1(i=1,2…n-1)個記錄中選取關鍵字最小的記錄作爲有序序列中第i個記錄。基於此思想的算法主要有簡單選擇排序、樹型選擇排序和堆排序。(這裏只介紹常用的簡單選擇排序)

簡單選擇排序的基本思想:給定數組:int[] arr={裏面n個數據};第1趟排序,在待排序數據arr[1]~arr[n]中選出最小的數據,將它與arrr[1]交換;第2趟,在待排序數據arr[2]~arr[n]中選出最小的數據,將它與r[2]交換;以此類推,第i趟在待排序數據arr[i]~arr[n]中選出最小的數據,將它與r[i]交換,直到全部排序完成。

舉例說明:要排序數組:int[] arr={6,3,8,2,9,1}; 

package com.baojian.demo02;
/*
 * 測試選擇排序
 */
public class Test {

	public static void main(String[] args) {
		int[] arr={6,3,8,2,9,1}; 
		System.out.println("排序前:");
		for (int i : arr) {
			System.out.print(i + " ");
		}
		selectSort(arr);
		System.out.println("排序後:");
		for (int i : arr) {
			System.out.print(i + " ");
		}
	}
	public static int[] selectSort(int[] arr){
		// 定義一箇中間變量
		int temp;
		// 外層循環控制數組中要和其他元素比較的元素
		for(int i = 0;i < arr.length - 1;i++){
			// 內層循環控制後面要比較的元素
			for (int j = i+1; j < arr.length; j++) {
				// 如果前面的數大於後面的數,交換兩數
				if(arr[i] > arr[j]){
					temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		return arr;
	}
}


參考鏈接:https://www.cnblogs.com/shen-hua/p/5424059.html



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