要求20个数据前十个和后十个分别逆序排列,前十个出来了,后十个一直是顺序的,采用头尾交换法
//仅供参考!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void inSort(int *a, int n)
{
int i, j, tmp;
for (j = 1; j < n; j++)
{
tmp = a[j];
i = j - 1;
while (tmp > a[i])
{
a[i + 1] = a[i];
i--;
if (i == -1)
break;
}
a[i + 1] = tmp;
}
}
int main(int argc, char *argv[])
{
int a[20], *p;
//随机生成20个数
srand(time(NULL));
for (int i = 0; i < 20; i++)
{
a[i] = rand() % 100 + 1;
printf("%4d", a[i]);
if (i == 9)
puts("");
}
puts("\n");
p = &a[10];
inSort(a, 10);
inSort(p, 10);
for (int i = 0; i < 20; i++)
{
printf("%4d", a[i]);
if (i == 9)
puts("");
}
puts("");
return 0;
}