插入排序使用的是增量方法:在排好序的子数组A[1:j-1]后,将元素A[j]插入,形成排好序的子数组A[1:j].
插入排序的代码(C++):
 1 /*
 2  * 
 3  *
 4  *       Filename:  insert_sort.cc
 5  *
 6  *    Description:  insert sort
 7  *
 8  *        Version:  1.0
 9  *        Created:  2011年03月12日 23时15分09秒
10  *       Revision:  none
11  *       Compiler:  gcc
12  *
13  *         Author:  Moking (ac), tzrac119@gmail.com
14  *        Company:  Unknown
15  *
16  * 
17  */
18 
19 #include<iostream>
20 
21 using namespace std;
22 
23 int main()
24 {
25     int A[]={5,2,4,6,1,3};
26     int i,j,key;
27 
28     for(j = 1; j != 6; j++)
29     {
30         //每次循环插入的值赋给key
31         //其中A[1:j-1]是已排序的。
32         key=A[j];
33         i = j-1;
34         while((i != -1) && A[i] > key)
35         {
36             //交换顺序
37             A[i+1] = A[i];
38             i--;
39         }
40         A[i+1]=key;
41     }
42     //输出结果
43     for(int k = 0; k != 6; k++)
44         cout << A[k] << " " ;
45     cout << endl;
46     return 0;
47 }
合并排序算法采用“分治法“。
/*
 *
 *       Filename:  merge_sort.cc
 *
 *    Description:  merge sort
 *
 *        Version:  1.0
 *        Created:  2011年03月12日 23时51分38秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Moking (ac), tzrac119@gmail.com
 *        Company:  Unknown 
 *
 */
#include<iostream>
using namespace std;
int  MAX=32767;
//合并函数
void merge(int *A,int p,int q,int r)
{
    int n1 = q - p + 1;
    int n2 = r - q;
    //初始化数组元素
    int L[n1+1];
    int R[n2+1];
    for(int i = 0; i != n1; i++)
        L[i] = *(A+p+i-1);
    for(int j = 0; j != n2; j++)
        R[j] = *(A+q+j);
    
    //通过设置"哨兵牌",避免检查是否没堆牌是否为空
    L[n1] = MAX;
    R[n2] = MAX;
    int i1=0,j1=0;
    for(int k = p-1 ; k != r; k++)
    {
        if(L[i1] <= R[j1])
        {
            *(A+k) = L[i1];
            i1++;
        }
        else
        {
            *(A+k) = R[j1];
            j1++;
        }
    
    }
}
void merge_sort(int *A,int p,int r)
{
    if(p < r)
    {
        int q = (p+r)/2;
        merge_sort(A, p, q);
        merge_sort(A, q+1, r);
        merge(A, p, q, r);        
    }
}
int main()
{
    int A[] = {13,14,15,8,9,1,3,4,7,5,2,6,10,11,12};
    merge_sort(A,1,15);
    //输出结果
    for(int i=0; i!=15; i++)
        cout << A[i] << " " ;
        cout << endl;
    
    return 0;
}
冒泡排序算法是一种流行的排序算法,它重复地交换相邻的两个反序元素。
/*
 * =====================================================================================
 *
 *       Filename:  bubble_sort.cc
 *
 *    Description:  bubble sort
 *
 *        Version:  1.0
 *        Created:  2011年03月13日 00时48分14秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Mnking (ac), tzrac119@gmail.com
 *        Company:  Unknown
 *
 * =====================================================================================
 */
#include <iostream>
using namespace std;
    
int main()
{
    int ia[]={2,3,5,8,9,7,18,27,38,32,54,18,6,12,21};
    for(int i = 0; i != 15;i++)
    {
        for(int j = 14;j != i; j--)
        {
            if(ia[j]<ia[j-1])
            {
                int temp = ia[j-1];
                ia[j-1] = ia[j];
                ia[j] = temp;
            }
        }
    }
    
    //输出结果
    
    
    for(int j1 = 0; j1 != 15;j1++) 
        cout << ia[j1] << " "; 
    cout << endl;
    
    return 0;
}