C语言day07-09选择排序

pragma mark 选择排序

pragma mark 概念

pragma mark 代码

#include <stdio.h>
int main()
{
#pragma mark 选择排序
    // 已知一个无序的数组,里面有5个元素,要求对数组进行排序
    int nums[5] = {99,12,88,11,22};
    
#pragma mark 回顾排序
    /*
    int a = 10;
    int b = 12;
    int c = 5;
    
    if (a > c) {
        int temp = a;
        a = c;
        c = temp;
    }
    
    if (b > c) {
        int temp = b;
        b = c;
        c = temp;
    }
    
    printf("%i, %i, %i,",a,b,c);
     */
    
#pragma mark 其他方法
    /*
     选择排序:
      特定:
     拿到其中一个元素的指依次和其他元素进行比较,完全比较完一次之后,最小值出现在第0位
     
     // 朝下 改变 初始化的表达式
     ****
     ***
     **
     *
     
     */
#pragma mark 遍历之后的结果
    // 动态获取数量
    int length = sizeof(nums)/sizeof(nums[0]);
    for (int i = 0; i < length; i++) {
        printf("nums[%i] = %i\n",i, nums[i]);
    }
    
    // 比较5-1 = 4次  length - 1 次
    // length -1 是为了防止角标越界
    // length -1 因为最后一个元素已经没有可以比较的了
    // 0,1,2,3,4
#pragma mark 取出数比较 交换两个数
    for (int i = 0; i < length - 1 ; i++) {
        for (int j = i; j< length - 1; j++) {
//            printf("*");
            printf("i = %i, j = %i\n ",i ,j);             //选择排序重点: 第一个数 和 所有的元素进行比较
            if (nums[i] > nums[j]) {
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
            }
        }
//        printf("\n");
    }
#pragma mark 遍历之后的结果
    printf("-----------------------------\n");
    for (int i = 0; i < length - 1; i++) {
        printf("nums[%i] = %i\n",i, nums[i]);
    }

    return 0;
}

    原文作者:liyuhong165
    原文地址: https://www.jianshu.com/p/97062d486c07
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞