java里怎么存入数据并进行排序_Java数据结构之排序---插入排序
插入排序的基本介紹:
插入排序是對想要排序的序列以插入的方式尋找該元素的適當的位置,從而達到排序的目的。
插入排序的基本思想:
把n個待排序的元素看成一個有序表和一個無序表,開始時,有序表只有一個元素(整個序列的第一個元素看成有序表的第一個元素),無序表中有n-1個元素,在接下來的排序過程中,每次從無序表中取出一個元素,將它依次與有序表中的元素進行比較(注意:與有序表中元素比較的順序是從后向前),將它插入到有序表中的適當的位置,使其成為新的有序表。
插入排序的基本思路圖:
接下來,我會通過代碼講述插入算法的實現過程,也會通過兩種方式進行講解:分步驟的實現,整體的實現。具體的解釋,我將在代碼的注釋中進行標注。
(1).分步驟的實現
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {101,34,119,1};
insertSort(arr);
}
//直接插入排序
public static void insertSort(int[] arr){
//第一趟排序
//因為我們第一個元素是有序表中的元素,因此我們在從無序表中取第一個元素的時候(索引為1),應該讓其與它前一個元素進行比較。
//所以我們要比較元素的索引值應該是1-1=0
//之后我們將帶排序的元素賦值給insertVal(因為是第一躺,所以是arr[1])
int insertIndex = 1-1;
int insertVal = arr[1];
//這里面我們通過insertIndex>=0來限制數組越界
//并且當我們插入的元素小于它之前的元素時,執行該循環
while(insertIndex>=0 && insertVal
//將有序列表中的元素后移
arr[insertIndex+1] = arr[insertIndex];
//當進行比較的時候,說明現在insertIndex位置的元素已經比我們待插入的元素大了,這個時候我們應該將insertIndex向前移動一位繼續比較,
//一直到insertIndex<0(待插入元素最小)或者找到一個比待插入元素小的數為止
insertIndex--;
}
//這里注意的是insertIndex+1,因為經過上述insertIndex--,我們最終得到的insertIndex比我們待插入的值少1,因此下面我們要加1,之后把insertVal插入進去。
arr[insertIndex+1] = insertVal;
System.out.println("第一趟排序的結果:");
System.out.println(Arrays.toString(arr));
//第二趟排序
insertIndex = 2-1;
insertVal = arr[2];
while(insertIndex>=0 && insertVal
arr[insertIndex+1] = arr[insertIndex];
insertIndex--;
}
arr[insertIndex+1] = insertVal;
System.out.println("第二趟排序的結果:");
System.out.println(Arrays.toString(arr));
//第三趟排序
insertIndex = 3-1;
insertVal = arr[3];
while(insertIndex>=0 && insertVal
arr[insertIndex+1] = arr[insertIndex];
insertIndex--;
}
arr[insertIndex+1] = insertVal;
System.out.println("第三趟排序的結果:");
System.out.println(Arrays.toString(arr));
}
上述代碼最終的結果如下所示:
(2).整體的代碼實現
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {101,34,119,1};
insertSort(arr);
}
//直接插入排序
public static void insertSort(int[] arr){
//直接插入排序
//通過上面的步驟,我們知道執行插入排序我們只需要每次改變i的值即可。
//因此整體的代碼如下
for(int i=1;i
int insertVal = arr[i];
int insertIndex = i-1;
while(insertIndex>=0 && insertVal
arr[insertIndex+1] = arr[insertIndex];
insertIndex--;
}
arr[insertIndex+1] = insertVal;
System.out.println("第"+i+"趟的排序:");
System.out.println(Arrays.toString(arr));
}
}
上述代碼的最終結果如下:
總結
以上是生活随笔為你收集整理的java里怎么存入数据并进行排序_Java数据结构之排序---插入排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python2.7 pyqt4创建qta
- 下一篇: 浙江大学计算机考研408上岸,2016年