一,冒泡排序
原理:比較兩個相鄰的元素,將值大的元素交換至右端。
思路:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第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