合适的位置 */
{
input[j + 1] = input[j]; /*
一边找一边移动元素 */
input[j] = temp;
}
}
}
四.带哨兵的直接排序法
/**
* 带哨兵的直接插入排序,数组的第一个元素不用于存储有效数据
* 将 input[0]作为哨兵,可以避免判定 input[j]中,数组是否越界
* 因为在 j--的过程中,当 j 减小到 0 时,变成了 input[0]与 input[0]
* 自身进行比较,很明显这个时候说明位置 i 之前的数字都比 input[i]小
* 位置 i 上的数字不需要移动,直接进入下一轮的插入比较。
*
*/
void InsertionSortWithPiquet(int input[],int len)
{
int i,j;
for (i = 2; i < len; i++) /* 保证数组 input 第一元素的存储数据无效,从第二个数
据开始与它前面的元素比较 */
{
input[0] = input[i];
for (j = i - 1; input[j] > input[0] ; j--)
{
input[j + 1] = input[j];
input[j] = input[0]; /* input[j]
一直都是排序的元素中最大的那一个 */
}
}
}
五.冒泡法
/*
冒泡排序法 */
void Bublesort(int a[],int n)
{
int i,j,k;
for(j=0;j<n;j++) /* 气泡法要排序 n 次*/