初識html及網路爬蟲概念
阿新 • • 發佈:2020-09-14
需求:
排序前:{4,6,8,7,9,2,10,1}
排序後:{1,2,4,5,7,8,9,10}
排序原理:
- 每一次遍歷的過程中,都假定第一個索引處的元素是最小值,和其他索引處的值依次進行比較,如果當前索引處的值大於其他某個索引處的值,則假定其他某個索引出的值為最小值,最後可以找到最小值所在的索引;
- 交換第一個索引處和最小值所在的索引處的值.
API設計
程式碼實現
package sort; //選擇排序 public class Selection { public static void sort(Comparable[]a){ for(int i=0;i<a.length-1;i++){ int minIndex=i; for(int j=i+1;j<a.length;j++){ if(greater(a[minIndex],a[j])) { minIndex=j; } } exch(a,i,minIndex); } } /* 比較v元素是否大於w元素 */ private static boolean greater(Comparable v,Comparable w){ return v.compareTo(w)>0; } /* 陣列元素i和j交換位置 */ private static void exch(Comparable[] a,int i,int j){ Comparable t = a[i]; a[i]=a[j]; a[j]=t; } }
package test;
import sort.Selection;
import java.util.Arrays;
//測試類
public class TestSelection {
public static void main(String[] args) {
Integer[] a = {4,6,8,7,9,2,10,1};
Selection.sort(a);
System.out.println(Arrays.toString(a));
}
}
複雜度分析
資料比較次數:
(N-1)+(N-2)+(N-3)+...+2+1=((N-1)+1)*(N-1)/2=(N^2-N)/2;
資料交換次數:
N-1
時間複雜度:N2/2-N/2+(N-1)=(N
根據大O推導法則,保留最高階項,去除常數因子,時間複雜度為O(N^2).