假設數列第一個元素為已排序數列,剩余數列為未排序將待排序元素挨個插入到已排序數列中每次插入都必須保證數列是有序的,即通過比較和移動有序數列中的元素,將元素插入到合適的位置
思路:如同玩撲克牌一樣,每次摸牌都將它與手中的牌比較,始終將牌放在比它大的牌前面,比它小的牌后面。這樣當牌全部摸到手上后,就是一個有序的序列。從后往前找合適的位置。
思路:如同玩撲克牌一樣,每次摸牌都將它與手中的牌比較,始終將牌放在比它大的牌前面,比它小的牌后面。這樣當牌全部摸到手上后,就是一個有序的序列。從后往前找合適的位置。
public class MainActivity extends AppCompatActivity { int[] arr = new int[]{9, 5, 4, 8, 7, 3, 1}; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); int[] insert = insert(arr); System.out.println(Arrays.toString(insert)); } public int[] insert(int[] array) { for (int i = 1; i < array.length; i++) { if (array[i] < array[i - 1]) {//如果第i個數大於前一個數就不用判斷了,因為前面都是有序數列,大於前一個數肯定比前面所有數都大,否則的話把這個數拿出來也就是賦值給temp,然后依次與前面的數比較,如果比前一個數小就讓前一個數往后挪一位直到找到比temp小的位置放進去 int temp = array[i]; int f = i; for (; f >= 1 && array[f - 1] > temp; f--) { array[f] = array[f-1]; } array[f] = temp; } } return array; } }