演算法 algorithms 基礎之 插入排序

2021-07-24 21:31:35 字數 2374 閱讀 4382

**:演算法(algorithms)基礎之:插入排序 — 沒那麼簡單的部落格

插入排序,對於少量的元素的資料,它是乙個有效的演算法。它的工作方式就像許多人排序一副撲克牌。開始時,我們的左手為空並且桌子上的牌面向下。然後,我們每次從桌上拿走一張牌並將它插入左手中正確的位置。為了找到一張牌的正確位置,我們從右往左將它與已在手中的每張牌進行比較,拿在左手上的牌總是排序好的。如圖:

假定陣列a[5, 2, 4, 6, 1, 3]是需要排序的資料, 長度為6,用php實現如下:

<?php 

<?php

/** * 插入排序[正序]

* author: n******

* date: 2016/11/16

* link:

*/$arr = [5, 2, 4, 6, 1, 3];

$len = count($arr);

$step = 0;

for ($i = 1; $i

< $len; $i++)

$arr[$j+1] = $key;

process($step, $arr);

}//記錄排序步驟

function

process

(&$step, $arr = array())

執行結果如下:

第1步排序:array

( [0] => 5

[1] => 2

[2] => 4

[3] => 6

[4] => 1

[5] => 3

)第2步排序:array

( [0] => 5

[1] => 4

[2] => 2

[3] => 6

[4] => 1

[5] => 3

)第3步排序:array

( [0] => 6

[1] => 5

[2] => 4

[3] => 2

[4] => 1

[5] => 3

)第4步排序:array

( [0] => 6

[1] => 5

[2] => 4

[3] => 2

[4] => 1

[5] => 3

)第5步排序:array

( [0] => 6

[1] => 5

[2] => 4

[3] => 3

[4] => 2

[5] => 1

)

演算法思路:

for($i = 1; $i

< $len; $i++)

3. 當第1次參考值比較完之後,需要把參考值插入到最後乙個比參考值大的元素a[j+1]的位置上:
$arr[$j + 1] = $key;
這樣左側的元素就依次排好了~

用go實現如下:

/*

插入排序[正序]

author: n******

date:2023年11月17日17:39:29

link:

*/package main

import (

"fmt"

)/*追蹤排序步驟*/

func showstep(args int, step *int)

/*插入排序[asc正序]*/

func insertsort(args ...int)

args[j+1] = key

showstep(args, p)

}}func main()

insertsort(arr...)

}

執行結果:

d

:/go/bin/go.exe build -i [d

:/go_workspace/algorithms]

success

: process exited with code 0.

d:/go_workspace/algorithms/algorithms.exe [d

:/go_workspace/algorithms]

第1步排序結果:[254

613]第2步排序結果:[245

613]第3步排序結果:[245

613]第4步排序結果:[124

563]第5步排序結果:[123

456]success

: process exited with code 0.

演算法 algorithms 基礎之 選擇排序

演算法 algorithms 基礎之 選擇排序 沒那麼簡單的部落格 陣列a中有n個數,首先找出a中的最小元素並將其與a 1 中的元素進行交換。接著,找出a中的次最小原始並將其與a 2 中的元素進行交換。對a中前n 1個元素按該方式繼續。該演算法稱為選擇演算法。假定陣列a 5,2,4,6,1,3 是需...

STL演算法 Algorithms 極值

stl演算法 algorithms 極值 1 min 返回兩個兩個引數中的最小值 原型 template const t min const t a,const t b template const t min const t a,const t b,compare comp 示例 min exam...

C 基礎之演算法

演算法 一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。其中演算法有五個特徵 1 有窮性 演算法中每條指令的執行次數有限,執行每條指令的時間有限 2 確切性 演算法的每一步驟必須有確切的定義 3 輸入 乙個演算法有0個或多個輸入,以刻畫運算物件的初始情況,所謂0個輸入是指演...