java排序-插入排序-直接排序
阿新 • • 發佈:2019-01-10
/** * 直接插入 * 時間複雜度O(n^2) * 空間複雜度O(1) */ @Test public void zjcrTest(){ //原陣列,直接排序原陣列 int[] data = new int[]{4,105,91,2,38,6,7,3,11,9}; //初始化 int temp; //在原陣列中一個一個的排序 /** * 1、取出第二個元素,與前面所有的元素,也就是第一個進行比較,找出合適的位置插入進去 * 2、取出第三個元素,與前面所有的元素反著進行比較,因為前面的已經排好,所以沒有找到相應的位置就會把元素向後移動,直到找到這個位置,留出空,插入進去 * 3、遍歷整個陣列,把所有的全部進行排序,得到結果*/ for (int i = 1; i < data.length; i++) { //建立一個即將插入陣列的數 temp=data[i]; int j; //元素向後移動,尋找temp能夠插入的位置 //data[j]>temp表示當找到這個位置的時候結束迴圈,也就是結束data中的元素的後移,為temp留出位置 for (j = i-1;j>=0 && data[j]>temp ;j--){ data[j+1]=data[j]; } //插入temp data[j+1]=temp; } //輸出陣列 for (int i = 0; i < data.length; i++) { System.out.print(data[i]+","); } }