#include "util.h"
//插入排序:
//第一轮比较第2个数与第1个数之间大小并进行排序
//第二轮比较第3个数与第2个数的大小,如果小于则交换,交换后再使用第2个数与第1个数比较
//第三轮比较第4个数与第3个数的大小,如果小于则交换,交换后再使用第3个数与第2个数比较,注意
//当前排序算法在外循环不断递增时,前面的数据已经是有序的了,所以如果内循环比较过程中,出现
//后面的数比前面的数大,则不需要再进行比较,内循环直接结束.
void sort(int iArray[], int size)
{
int i = 0;
int j = 0;
for ( i = 1; i < size; i++ )
{
for ( j = i; j > 0 && less(iArray[j], iArray[j - 1]); j-- )
{
exch(iArray, j - 1, j);
}
}
}
int main()
{
int test[] = {2, 5, 7, 30, 12, 14, 3, 6};
sort(test, sizeof(test)/sizeof(test[0]));
arrayShow(test, sizeof(test)/sizeof(test[0]));
return 0;
}
<pre name="code" class="cpp">#include <stdio.h>
#include "util.h"
void arrayShow(int iArray[], int size)
{
int i = 0;
for ( i = 0; i < size; i++ )
{
printf("%d ", iArray[i]);
}
printf("\r\n");
}
int less(int a, int b)
{
if ( a < b ) return 1;
return 0;
}
int compare(int a, int b)
{
if ( a > b ) return 1;
if ( a < b ) return -1;
return 0;
}
void exch(int iArray[], int indexA, int indexB)
{
int tmp = iArray[indexA];
iArray[indexA] = iArray[indexB];
iArray[indexB] = tmp;
}