/**<br> * 插入排序:就是从数组目前的第二个元素开始,依次和前面的比较后再插入的。<br> * 就像数组原来就一个元素,后面的元素插入前都与已存在的元素进行了比较。<br> * {5,4,22,1,9,13};就当做当前只有一个元素5,后面的元素依次取出,并与已插入的元素(也就是前面的元素)进行比较大小来确定插入新数组所在的索引位置<br> * 4,5==》4,5,22==》1,4,5,22==》1,4,5,9,22==》1,4,5,9,13,22<br> * @param arr<br> */<br>//此次是从小到大排序<br>public static void main(String[] args) {<br> int[] arr={5,4,9,6,1};<br> //外层循环意义:新插入元素的老索引.i从1开始,因为第一个元素直接插入不用比较<br> for (int i = 1; i <= arr.length-1; i++) {<br> //新插入元素需要与已插入的所有元素进行依次比较,<br> //比如插入的是第四个元素6,此时数组为{4,5,9,6,1}那就要6和9比,交换,6再和5比,不交换,5再和4比,不交换。<br> for (int j = i-1; j >= 0; j--) {<br> if (arr[j+1]<arr[j]){<br> int temp=arr[j+1];<br> arr[j+1]=arr[j];<br> arr[j]=temp;<br> }else{//因为是依次进行比较的,当不进行交换时,前面的元素都是已经排序插入的,就不需要再比较了<br> j=0;<br> }<br> }<br><br> }<br>}<br>
O(n*n)