数据结构——选择排序

Posted by Beyonderwei on 2019-03-15
Words 252 and Reading Time 1 Minutes
Viewed Times

一、排序思想

每一次取出没有被排序的元素中最小的元素。

二、图解

  1. 先从已有的七个中找到最小的(下标为2),记住下标,与下标为0的交换。
  2. 从剩下的六个中再找到这六个中最小的(下标为3),记住下标,与下标为1的交换。
  3. 直到循环六次(N-1次),全部排好。

    三、代码实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    /**
    *
    * @param array[] 要排序的数组
    * length 数组长度
    */

    void selectSort(int array[], int length)
    {
    int i, j, min, temp;
    for(i=0; i<length; i++)
    {
    min = i;
    for(j=i+1; j<length; j++)
    {
    if(array[min] > array[j])
    min = j;
    }
    if(i != min)
    {
    temp = array[min];
    array[min] = array[i];
    array[i] = temp;
    }
    }
    }

    int main(void)
    {
    int a[] = { 2, 5, 3, 1, 4};
    int length = sizeof a /sizeof a[0]; // 得到数组长度
    int i;
    for (i = 0; i < length; i++) //打印原有数组
    printf("%d%s", a[i], i == length -1 ? "\n" : " ");
    selectSort(a, length);
    for (i = 0; i < length; i++) // 打印
    printf("%d%s", a[i], i == length -1 ? "\n" : " ");

    return 1;
    }

本文为作者原创文章,未经作者允许不得转载。

...

...

00:00
00:00