假設我們輸入的是 「5,1,4,2,3」 我們從第二個數字開始,這個數字是1,我們的任務只要看看1有沒有正確的位置,我們的做法是和這個數字左邊的數字來比,因此我們比較1和5,1比5小,所以我們就交換1和5,原來的排列就變成了「1,5,4,2,3 」
接下來,我們看第3個數字有沒有在正確的位置。這個數字是4,它的左邊數字是5,4比5小,所以我們將4和5交換,排列變成了 「1,4,5,2,3 "我們必須繼續看4有沒有在正確的位置,4的左邊是1,1比4小,4就維持不動了。
再來看第四個數字,這個數字是2,我們將2和它左邊的數字相比,都比2大,所以就將2一路往左移動,一直移到2的左邊是1,這時候排序變成了 「1,2,4,5,3 」
最後,我們檢查第五個數字,這個數字是3,3必須往左移,一直移到3的左邊是2為止,所以我們的排列就變成了 「1,2,3,4,5 」排序因此完成了。
所謂插入排序法,就是檢查第i個數字,如果在它的左邊的數字比它大,進行交換,這個動作一直繼續下去,直到這個數字的左邊數字比它還要小,就可以停止了。插入排序法主要的迴圈有兩個變數:i和j,每一次執行這個迴圈,就會將第i個數字放到左邊恰當的位置去。
**實現:
package com.zc.manythread;
/** * 插入排序
* @author 偶my耶
* */
public class insertionsort
data[j] = temp;}}
}public static void main(string args) ;
insertion_sort(data);
for (int i = 0; i < data.length; i++)
}}
選擇排序
選擇排序是一類借助「選擇」 進行排序的方法。其主要思想是:沒趟排序在當前排序序列中選出關鍵碼最小的記錄,天機到有序序列中。選擇排序比較獨特的地方是:記錄的移動次數少。
選擇排序源**:
package com.zc.manythread;
/** * 選擇排序
* @author administrator
* */
public class selectsort {
/*** 快速排序
* @param date
* @return
*/int selectsort(int date){
for (int i = 0; i < date.length-1; i++) {
int index=i;
for (int j = i+1; j < date.length; j++) {
if (date[j]
部落格版權:
演算法篇 插入排序和選擇排序演算法
假設我們輸入的是 5,1,4,2,3 我們從第二個數字開始,這個數字是1,我們的任務只要看看1有沒有正確的位置,我們的做法是和這個數字左邊的數字來比,因此我們比較1和5,1比5小,所以我們就交換1和5,原來的排列就變成了 1,5,4,2,3 接下來,我們看第3個數字有沒有在正確的位置。這個數字是4,...
Java排序演算法之氣泡排序 插入排序 選擇排序
一 前言 排序是日常中最常見的一種演算法,常見的演算法有 氣泡排序 插入排序 選擇排序 歸併排序 快速排序 計數排序 快速排序 基數排序 桶排序。那麼該怎樣分析和學習排序演算法呢?二 演算法的分析課 在上述的八種排序方法中,根據時間複雜度和是否基於比較可以為三種 排序演算法 時間複雜度 是否基於比較...
選擇和插入排序 java
選擇排序 selection sort 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。演算...