日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单排序--插入排序

發布時間:2023/12/2 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单排序--插入排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

插入排序:

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();} }

總結

以上是生活随笔為你收集整理的简单排序--插入排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。