数组逆序:
int a[10] = {0,3,4,89,8,23,44,7,11,10};
int min = 0; // 数组最小下标
int max = 9; // 数组最大下标
while(min < max)
{
int tmp = a[min];
a[min] = a[max];
a[max] = tmp;
min++;
max--;
}
数组排序:
1、冒泡排序
(1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上
(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置
(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
int a[10] = {0,3,4,89,8,23,44,7,11,10};
int i,j;
// 外层循环控制排序的次数
for (i = 0; i < 9; i++)
{
// 内存循环进行每一次排序的内部数据比较
for (j = 0; j < 9 - i; j++)
{
if (a[j] > a[j+1])
{
int tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
for (i = 0; i < 10; i++)
{
printf ("%d\n", a[i]);
}
2、选择排序:
(1)首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上
(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换—第二趟选择排序
(3)重复上述过程,共经过n-1趟排序后,排序结束
// 外层循环控制排序的次数
for (i = 0; i < 9; i++)
{
// 找出这一轮比较中数值最小的元素的下标
int min= i;
for (j = i+1; j < 10; j++)
{
if (a[j] < a[min])
{
min = j;
}
}
// 如果下标与原来的下标不一样,表示有一个数比数组第i个元素要小,需要进行交换
if (min != i)
{
int tmp = a[i];
a[i] = a[min];
a[min] = tmp;
}
}
