插入排序

插入排序

/*******************************************************
 *
 *插入排序
 *
 *
 *******************************************************/
#include<stdio.h>

#define LEN 5
int a[LEN] = {10, 5, 2, 4, 7};

void InsertionSort(void)
{
    int i, j, key;
    for (j = 1; j < LEN; j++)
    {
        key = a[j];
        i = j - 1;
        while (i >= 0 && a[i] > key)
        {
            a[i+1] = a[i];
            i--;
        }
        a[i+1] = key; 
    }
    
}

int main(void)
{
    InsertionSort();
    return 0;
}

 php插入排序:

<?php
 function InsertionSort($arr)
 {
         $len = count($arr);
         for ($j = 1; $j < $len; $j++)
         {
              $temp = $arr[$j];
              $i = $j - 1;
              while ($i >= 0 && $arr[$i] > $temp)
              {
                   $arr[$i+1] = $arr[$i];
                   $i--;
              }
              $arr[$i+1] = $temp;
         }
         print_r($arr);
         return $arr;                       
 }
 $arr = array(10,5,2,4,7);
 InsertionSort($arr);
?>

算法描述:

1.从第一个元素开始,该元素可以认为已经被排序;(j=0的那个元素)

2.取出下一个元素,在已经排序的元素序列中从后向前扫描;

10, 5, 2, 4, 7

5, 10, 2, 4, 7

2, 5, 10, 4, 7

2, 4, 5, 10, 7

2, 4, 5, 7, 10

3.如果元素(已排序)大于新元素,将该元素移到下一位置;(10,5 => 5,10)

4.重复步骤3,直到已经找到已排序元素小于或等于新元素的位置;

5.将新元素插入到该位置中;

6.重复步骤2。

原文地址:https://www.cnblogs.com/zhaozhilu/p/2847505.html