简单排序--插入排序
生活随笔
收集整理的這篇文章主要介紹了
简单排序--插入排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
插入排序:
public void sort(){int in,out,temp;for(out=1;out<nElements;out++){temp = arr[out];in = out;while(in>0&&arr[in-1]>=temp){arr[in] = arr[in-1];//待插入的數據比其之前的數字大的右移,從小到大排序--in;//依次左移}arr[in] = temp;//直到遇到比temp小的,將temp插入}}
大多數情況下,插入排序是簡單排序中最好的一種,時間復雜度仍為O(N^2),但在一般情況下比冒泡快一倍,比選擇還要快一些。
先將下標為1的數組元素放入temp,從移走的元素(放到temp)處,向左比較:
將下標為1的數組元素放入temp:
從空處向左比較,為temp找合適的插入點:
outer右移,指向下一個待插入的元素,將其放入temp:
排序完成:
完整代碼:
package TwoArray;/*** 插入排序 將待排序的一個一個放入temp,與所處位置之前的數值比較,一個個插入* 將數組下標1的值作為分界點,暫存在臨時變量temp,temp依次與左邊的比較若左邊in的比其大,將左邊比其大的依次右移,直到遇到比其小的騰出一個空位* 插入這個空位,in一直指向空位位置,out一直右移指向下一個待插入的元素。大多數情況下,插入排序是簡單排序中最好的一種,時間復雜度O(N^2)* @author zhic**/ public class InsertionSort {int[] arr;int nElements;public InsertionSort(int max){arr = new int[max];nElements = 0;}public void insert(int value){arr[nElements] = value;nElements++;}public void display(){for(int i=0;i<nElements;i++){System.out.print(arr[i] + " ");}}public void swap(int one,int two){int temp = arr[one];arr[one] = arr[two];arr[two] = temp;}public void sort(){int in,out,temp;for(out=1;out<nElements;out++){temp = arr[out];in = out;while(in>0&&arr[in-1]>=temp){arr[in] = arr[in-1];//待插入的數據比其之前的數字大的右移,從小到大排序--in;//依次左移}arr[in] = temp;//直到遇到比temp小的,將temp插入}}public static void main(String[] args){InsertionSort arr = new InsertionSort(15);arr.insert(10);arr.insert(40);arr.insert(0);arr.insert(20);arr.insert(2);arr.insert(1);arr.insert(5);arr.insert(14);arr.insert(70);arr.insert(11);arr.display();System.out.println();arr.sort();arr.display();} }
總結
以上是生活随笔為你收集整理的简单排序--插入排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器信道选择哪个最好 路由器信道如何选
- 下一篇: 超棒的Glide图片加载