1. Beroperasi dari elemen kedua tatasusunan Jika didapati bahawa elemen sebelumnya lebih besar daripadanya, gerakkan elemen sebelumnya ke belakang sehingga elemen yang ditunjuk oleh cur lebih besar daripada atau sama dengan elemen sebelumnya masa Kedudukan yang ditunjuk oleh cur ialah kedudukan di mana elemen yang hendak dimasukkan harus dimasukkan.
static int[] insertSort2(int[] array){ int len = array.length; for (int begin = 1; begin < len; begin++){ int cur = begin; int tmp = array[cur]; while (cur > 0 && array[cur] < array[cur-1]){ array[cur] = array[cur-1]; cur--; } array[cur] = tmp; } return array; }
2. Carian binari mengurangkan bilangan perbandingan, iaitu panggilan fungsi cmp, dan juga mengurangkan panggilan fungsi swap. Ia adalah lebih pantas untuk mencari kedudukan di mana elemen semasa harus dimasukkan, dan kemudian mengalihkannya, yang meningkatkan kecekapan.
static int[] insertSort3(int[] array){ int len = array.length; for (int begin = 1; begin < len; begin++){ int v = array[begin]; int insertIndex = search(array,begin); // 将 [insertIndex, begin) 范围内的元素往右边挪动一个单位 for (int i = begin; i > insertIndex; i--){ array[i] = array[i-1]; } array[insertIndex] = v; } return array; } static int search(int[] array, int index){ int begin = 0; int end = index; while(begin < end){ int mid = (begin+end) >> 1; if (array[index] < array[mid]){ end = mid; }else{ begin = mid+1; } } return begin; }
Atas ialah kandungan terperinci Bagaimana untuk memasukkan elemen ke dalam tatasusunan java dan menyusunnya dengan cepat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!