第07天C语言(09):选择排序

一、概念
二、代码
#include <stdio.h>
int main()
{
    // 已知一个无序的数组,里面有5个元素,要求对数组进行排序
    // int nums[5] = {99,22,33,66,77};
    
    /*
    int a = 10;
    int b = 12;
    int c = 5;
    printf("排序前 a = %i, b = %i , c = %i\n",a,b,c);

    if ( a > b) {
       int temp = a;
        a = b;
        b = temp;
    }
    
    if ( a > c) {
        int temp = a;
        a = c;
        c = temp;
    }
    
    
    if ( b > c) {
        int temp = b;
        b = c;
        c = temp;
    }
    
    printf("排序后 a = %i, b = %i , c = %i\n",a,b,c);
     */
#pragma 1.选择排序
     int nums[5] = {99,22,33,66,77};

    /*
     选择排序: 从小到大
     特点 : 
     拿到其中一个元素的值 和 其他元素进行比较, 完全比较完一次之后,最值出现在第0位
     */
    
    int length = sizeof(nums) / sizeof(nums[0]);
    printf("length = %i\n",length);
    for (int i = 0; i < length; i++) {
        printf("遍历前 nums[%i] = %i\n",i,nums[i]);
    }
    
    
    // length - 1 视为了方式角标越界
    // length -1 因为最后一个元素 已经没有可以比较的了
    // 0,1,2,3,4
    
    for (int i = 0; i <  length -1 ; i++) {
        for (int j = i + 1; j < length; 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");
    }
    
    
    printf("--------\n");

    for (int i = 0; i < length; i++) {
        printf("遍历后 nums[%i] = %i\n",i,nums[i]);
    }

    return 0;
}
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容