步驟 1 : 選擇法排序html
選擇法排序的思路:
把第一位和其餘全部的進行比較,只要比第一位小的,就換到第一個位置來
比較完後,第一位就是最小的
而後再從第二位和剩餘的其餘全部進行比較,只要比第二位小,就換到第二個位置來
比較完後,第二位就是第二小的
以此類推
java
public class HelloWorld { public static void main(String[] args) { int a [] = new int[]{18,62,68,82,65,9}; //排序前,先把內容打印出來 for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(" "); //選擇法排序 //第一步: 把第一位和其餘全部位進行比較 //若是發現其餘位置的數據比第一位小,就進行交換 for (int i = 1; i < a.length; i++) { if(a[i]<a[0]){ int temp = a[0]; a[0] = a[i]; a[i] = temp; } } //把內容打印出來 //能夠發現,最小的一個數,到了最前面 for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(" "); //第二步: 把第二位的和剩下的全部位進行比較 for (int i = 2; i < a.length; i++) { if(a[i]<a[1]){ int temp = a[1]; a[1] = a[i]; a[i] = temp; } } //把內容打印出來 //能夠發現,倒數第二小的數,到了第二個位置 for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(" "); //能夠發現一個規律 //移動的位置是從0 逐漸增長的 //因此能夠在外面套一層循環 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(" "); } }
步驟 2 : 冒泡法排序數組
冒泡法排序的思路:
第一步:從第一位開始,把相鄰兩位進行比較
若是發現前面的比後面的大,就把大的數據交換在後面,循環比較完畢後,最後一位就是最大的
第二步: 再來一次,只不過不用比較最後一位
以此類推
code
public class HelloWorld { public static void main(String[] args) { int a [] = new int[]{18,62,68,82,65,9}; //排序前,先把內容打印出來 for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(" "); //冒泡法排序 //第一步:從第一位開始,把相鄰兩位進行比較 //若是發現前面的比後面的大,就把大的數據交換在後面 for (int i = 0; i < a.length-1; i++) { if(a[i]>a[i+1]){ int temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; } } //把內容打印出來 //能夠發現,最大的到了最後面 for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(" "); //第二步: 再來一次,只不過不用比較最後一位 for (int i = 0; i < a.length-2; i++) { if(a[i]>a[i+1]){ int temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; } } //把內容打印出來 //能夠發現,倒數第二大的到了倒數第二個位置 for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(" "); //能夠發現一個規律 //後邊界在收縮 //因此能夠在外面套一層循環 for (int j = 0; j < a.length; j++) { for (int i = 0; i < a.length-j-1; i++) { if(a[i]>a[i+1]){ int temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; } } } //把內容打印出來 for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(" "); } }
練習: 排序htm
(首先建立一個長度是5的數組,並填充隨機數。blog
首先用選擇法正排序,而後再對其使用冒泡法倒排序排序
注 所謂的正排序就是從小到大排序,倒排序就是從大到小排序)
get