目前共有4篇帖子。 內容轉換:不轉換▼
 
點擊 回復
345 3
【图解】插入排序法的原理
一派護法 十九級
1樓 發表于:2016-1-9 15:15
一派護法 十九級
2樓 發表于:2016-1-9 15:15
【本页是由以下PHP程序生成的】
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
body {
    font-family: Arial;
    font-size: 13px;
}
</style>
</head>

<body>
<h2>插入排序法原理</h2>
<?php
$array = array(341, 576, 216, 498, 142, 166, 112, 296, 785, 348);
$n = count($array);
$tab = '&nbsp;&nbsp;&nbsp;&nbsp;';
printf('<b>原数组: </b>%s<br>', join(', ', $array));
for ($j = 1; $j < $n; $j++)
{
    $key = $array[$j]; // 因為之後$array[$j]會變,所以必須拿出來暫存
    $i = $j - 1;
    echo "外层for循环到达了array[$j],其值为{$key}存入变量key中<br>";
    $b = $array;
    $c = $array;
    if ($array[$i] <= $key) {
        echo "{$tab}因为前面一个数更小,所以不移动<br>";
    }
    while ($i >= 0 && $array[$i] > $key)
    {
        /*$b = $array;
        $b[$i + 1] = '<b style="color:red">' . $b[$i + 1] . '</b>';
        $b[$i] = '<b>' . $b[$i] . '</b>';
        echo '&nbsp;&nbsp;&nbsp;&nbsp;Replace [' . ($i + 1) . "] with [$i]: " . join(', ', $b) . '<br>';*/
        $array[$i + 1] = $array[$i];
        $b[$i] = '<b style="color:red">' . $b[$i] . '</b>';
        $c[$i + 1] = '<b style="color:red">' . $c[$i] . '</b>';
        //echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: ' . join(', ', $array) . '<br>';
        $i--;
    }
    $array[$i + 1] = $key;
    $b[$j] = '<b style="color:blue">' . $b[$j] . '</b>';
    $c[$i + 1] = '<b style="color:blue">' . $key . '</b>';
   
    echo $tab . join(', ', $b) . '<br>';
    echo $tab . join(', ', $c) . '<br>';
   
   
}
printf('<b>排序结果: </b>%s<br>', join(', ', $array));
?>
</body>
</html>
一派護法 十九級
3樓 發表于:2016-1-9 15:29
【C语言程序】
#include <stdio.h>
#define N 10
int main()
{
    int i, j, key/*, a[N]*/;
    int a[N] = {341, 576, 216, 498, 142, 166, 112, 296, 785, 348};
    /*printf("請輸入%d個整數:\n", N);
    for (i = 0; i < N; i++)
        scanf("%d", &a[i]);*/
   
    for (j = 1; j < N; j++)
    {
        key = a[j];
        for (i = j - 1; i >= 0 && a[i] > key; i--)
            a[i + 1] = a[i];
        a[i + 1] = key;
    }
   
    for (i = 0; i < N; i++)
        printf("%d ", a[i]);
    putchar('\n');
    return 0;
}
一派護法 十九級
4樓 發表于:2016-1-9 16:39
【C语言程序2】
#include <stdio.h>

int main()
{
    int nums[] = {287, 114, 303, 558, 311, 254, 583, 799, 116, 245, 388, 14, 98, 65, 47};
    int count = sizeof(nums) / sizeof(int);
    int i, j, key;
   
    for (i = 1; i < count; i++)
    {
        key = nums[i];
        for (j = i - 1; j >= 0 && nums[j] > key; j--)
            nums[j + 1] = nums[j];
        nums[j + 1] = key;
    }
    for (i = 0; i < count; i++)
        printf("%d ", nums[i]);
    putchar('\n');
    return 0;
}

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:345 回複數:3
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-1-9 16:39
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。