java八种排序算法---直接插入排序
在學(xué)習(xí)算法的過程中,我們難免會接觸很多和排序相關(guān)的算法。總而言之,對于任何編程人員來說,基本的排序算法是必須要掌握的。
從今天開始,我們將要進行基本的排序算法的講解。Are you ready?Let‘s go~~~
直接插入排序概念講解:
直接插入排序的做法是:每次從無序表中取出第一個元素,插入到有序表的合適位置,使有序表仍然有序
第一趟比較前2個數(shù)然后把第二個數(shù)按大小插入到有序表中,第二趟把第三個數(shù)與前2個數(shù)從前向后掃描,把第三個數(shù)按大小插入到有序表中,依次進行下去,進行了(n-1)趟掃描以后就完成了整個排序過程。
直接插入排序是由兩層嵌套循環(huán)組成的,外層循環(huán)標識并決定待比較的數(shù)值,內(nèi)層循環(huán)為待比較數(shù)值確定其最終位置,直接插入排序是將待比較的數(shù),與它前一個數(shù)值進行比較,所以外層循環(huán)是從第二個數(shù)值開始的,當(dāng)前一個數(shù)值比較大的情況下循環(huán)繼續(xù)比較,直到找到比待比較數(shù)值小的,并將待比較數(shù)值置入其 后一位置,結(jié)束該次循環(huán)。
?
排序方法?
1.簡單方法 首先在當(dāng)前有序區(qū)R[1..i-1]中查找R[i]的正確插入位置k(1≤k≤i-1);然后將R[k..i-1]中的記錄均后移一個位置,騰出k位置上的空間插入R[i]。 注意:若R[i]的關(guān)鍵字大于等于R[1..i-1]中所有記錄的關(guān)鍵字,則R[i]就是插入原位置。 直接插入排序的Java代碼實現(xiàn) package com.yonyou.test;/*** 內(nèi)部排序算法之直接插入排序* 默認按照從小到大進行排序操作*/ public class Test{public static void main(String[] args) {//需要進行排序的數(shù)組int[] array=new int[]{8,3,2,1,7,4,6,5};//輸出原數(shù)組的內(nèi)容printResult(array);//直接插入排序操作directInsertSort(array);//輸出排序后的相關(guān)結(jié)果printResult(array);}/*** 直接插入排序的方法* @param array*/private static void directInsertSort(int[] array) {for(int i=0;i<array.length;i++){for(int j=0;j<i;j++){if(array[i]<array[j]){int temp=array[i];System.arraycopy(array,j,array,j+1,i-j);array[j]=temp;}}}}/*** * 輸出相應(yīng)數(shù)組的結(jié)果* @param array*/private static void printResult(int[] array) {for(int value:array) System.out.print(" "+value+" ");System.out.println();}/*** 交換數(shù)組中兩個變量的值* @param array* @param i* @param j*/private static void swap(int[] array,int i,int j){int temp=array[i];array[i]=array[j];array[j]=temp;} }
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/yb90/p/10017065.html
總結(jié)
以上是生活随笔為你收集整理的java八种排序算法---直接插入排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zoj3195 联通树上三个点的路径长
- 下一篇: 基于CefGlue的桌面应用开发