| 
          【图解】插入排序法的原理 | 
        
                
          
            
                         一派掌門 二十級              | 
          
            
            
            
                       | 
        
                
          
            
                         一派掌門 二十級              | 
          
            
            
             
              【本页是由以下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; }              
             | 
|