C语言day07-09选择排序

作者: liyuhong165 | 来源:发表于2016-05-01 00:23 被阅读70次

    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;
    }
    
    

    相关文章

      网友评论

        本文标题:C语言day07-09选择排序

        本文链接:https://www.haomeiwen.com/subject/vtikrttx.html