C 氣泡排序法 插入排序法 選擇排序法

2022-01-10 07:53:01 字數 3203 閱讀 4359

是陣列等線性排列的數字從大到小或從小到大排序。

以從小到大排序為例。

資料 11, 35, 39, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23

使用 陣列 int array 儲存數字。

過程(陣列從小到大排序) 

思路迴圈都把最大的數放在最後一位,無序數字個數減1。

i 為當前任務位置,n 剩下的無序數字個數

從第 0位開始,比較前後兩位數字大大小,當array[i] > array[i+1]時,數值互換。

乙個迴圈後,數值最大的已經存到陣列最後一位。

無序數字個數 n-1

for (int j = array.length - 1; j > 0; j--)  //每排一次,剩下的無序數減一}}

排序結果

**如下

插入排序演算法是把乙個數插入乙個已經排序好的陣列中。

例如 把 22 插入到 [1,5,10,17,28,39,42] 中,

結果  [1,5,10,17,22,28,39,42] 。

對陣列使用插入排序法

陣列 int array = [11, 39, 35, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23];

陣列元素是無序,設定乙個從大到小或從小到大的方向,第一位就是有序的[ 11 ]

第一次插入: [11, 39, 35, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23]。

取第二個數跟第乙個進行比較, 兩位有序 [11,39]

第二次插入:[11,39, 35, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23]

取第三個數,[11, 39,35],進行插入

[11, 35, 39,30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23]

以後每次取乙個數,插入陣列。

實現方法有很多種,筆者的方法跟氣泡排序法相似。

public

static

void resort(ref

int array)}}

}

試試把下面的**複製到控制台,可以看到每次排序的結果。

using

system;

namespace

, "); }

for (int j = i; j > 0; j--)

}console.writeline(

"\n排序後: ");

for (int sun = 0; sun <= i && sun < array.length; sun++)

, ");}}

}static

void main(string

args)

;console.write(

"原陣列:[");

foreach (var i in

array)

, ");

}console.write(

"]\n");

resort(

refarray);

console.write(

"\n- - - - -\n最後結果:[");

氣泡排序法與插入排序法比較

氣泡排序是從一端開始,比較大小後存到另一端。每次都是從前開始,把最大或最小的結果放到最後。

插入排序始終是從前面開始,把下乙個元素存到前面,不用比較最大最小的結果。

每次從後面找到最小或最大的數,進行位移排序。

陣列 int array = [11, 39, 35, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23];

第一位 i=0

最小值下標  minindex = 0,最小值 min=11

從後面查詢比 11 小的數,找到第 下標位 8,值為1,

進行交換,交換後 [1, 39, 35, 30, 7, 36, 22, 13, 11, 38, 26, 18, 12, 5, 45, 32, 6, 21, 42, 23];

第二位 i=1,

最小值下標  minindex = 1,最小值 min=39,

從後面查詢比 39 小且最小的數,找到 下標為 13,值為 5,

進行交換,交換後 [1, 5, 35, 30, 7, 36, 22, 13, 11, 38, 26, 18, 12, 39, 45, 32, 6, 21, 42, 23];

public

static

void resort(ref

int array)

}if (array[i] != array[minindex]) //

如果到比第i為更小的數,則發生交換。找不到則不改變}}

氣泡排序法 選擇排序法 插入排序法

一貫作風,不說廢話,走起 test public void test1 輸出每一步的排序結果 system.out.print 第 i 次的排序結果為 for int num arr system.out.println 換行 選擇排序 param arr 需排序的陣列 public void se...

php排序法 氣泡排序,選擇排序,插入排序

冒泡法排序 就是從小到大排序 function maopao arr arr array 2 1 4 3 maopao arr print r arr 插入排序 從小到大的順序 function insert sort arr arr array 2 1 4 3 insert sort arr pr...

C語言 冒泡法排序,選擇法排序和插入排序

例項1 冒泡法排序 陣列中有n 個整數,用冒泡法將它們從小到大 或從大到小 排序。例項解析 排序是非常重要且很常用的一種操作,有氣泡排序 選擇排序 插入排序 希爾排序 快速排序 堆排序等多種方法。這裡我們先簡單介紹前三種排序演算法和 的實現,其餘演算法將在後續課程 資料結構 中學習到。冒泡法排序是c...