|   |  | 
                
          |   | 
			  【本页是由以下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 = '    ';
 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 '    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 '                                : ' . 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>
 
 | 
                
          |   | 
			  【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;
 }
 
 | 
                
          |   | 
			  【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;
 }
 
 |