数组操作

xiaoxiao2021-02-28  109

数组逆序:

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;

        }

}

转载请注明原文地址: https://www.6miu.com/read-38669.html

最新回复(0)