数据结构之选择排序(C语言)

选择排序 :对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小,则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素"先变成前一个元素,继续跟他的后一个元素进行比较,如果后面的元素比他要小则用变量K记住他在数组中的位置(下标)等到循环结束的时候,我们应该找到最小的那个数的下标了,然后进行判断,如果这个元素的下表不是第一个元素的下标就让第一个元素跟他交换值,这样就找到整个数组中最小的数了。然后找到数组中第二小的数,让他跟数组中第二个元素交换值,以此类推.

void Rank(int arr[], int len)
{
    int i = 0, j =0;
    int temp = 0;
    for(i = 0; i < len - 1; i++)
    {
        for(j = i + 1;j < len;j++)
        {
            if(arr[i] > arr[j])
            {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }   
}

完整代码如下:

#include <stdio.h>
#include <stdlib.h>
void Rank(int arr[], int len)
{
    int i = 0, j =0;
    int temp = 0;
    for(i = 0; i < len - 1; i++)
    {
        for(j = i + 1;j < len;j++)
        {
            if(arr[i] > arr[j])
            {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }   
}

int main()
{
    
    int a[10] = {65, 48, 95, 78, 60, 49, 13, 38, 99, 80};
    int len = sizeof(a)/sizeof(a[0]);
    int i = 0;
    Rank(a, len);
    for(i = 0;i<len;i++)
    {
        printf("%4d", a[i]);
    }
    printf("\n");   
    return 0;
}

转载于:https://www.jianshu.com/p/effebdbdba58

猜你喜欢

转载自blog.csdn.net/weixin_34054866/article/details/91200532
今日推荐