C语言day07-11冒泡排序

pragma mark 冒泡排序

pragma mark 概念

/*
 #pragma 冒泡排序
 特点:
 是用相邻的两个元素进行比较,每完全比较完一次,最值出现在末尾  // 第一次得到最大的值
 // 每次都是从0开始
 
 规律:
 比较次数
 ****
 ***
 **
 *
 
 */

pragma mark 代码

#include <stdio.h>
int main()
{

#pragma mark  已知一个无序的数组,里面有5个元素,要求对数组进行排序

    int nums[5] = {99,12,88,11,22};
    
#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 排序前
    // 动态获取数量
    int length = sizeof(nums)/sizeof(nums[0]);
    for (int i = 0; i < length; i++) {
        printf("nums[%i] = %i\n",i, nums[i]);
    }
#pragma mark 冒泡排序
    for (int i = 0; i < length - 1; i++)
    {
        for (int j = 0; j < length - 1 - i; j++) {
//            printf("*");
            // 获取相邻索引
            printf("%i == %i \n",j,j+1);    // 冒泡排序重点 : 每相邻数进行比较
            // 区别
            if (nums[j]>nums[j+1]) {
                // 第三变量 保存第一个变量先
                int temp = nums[j];
                // 将 第二个数 赋值给 第一个数
                nums[j] = nums[j+1];
                // 再讲 第三变量 赋值给 第二个数
                nums[j+1] = temp;
            }
        }
#pragma mark  之前学习的
        /*
         for (int j = i; j < 4; j++) {
         //            printf("*");
         // 获取相邻索引
         printf("%i == %i \n",j,j+1);
         }
         */
//        printf("\n");
    }
    
    printf("-------------\n");
    
#pragma mark 排序后
    // 动态获取数量
    for (int i = 0; i < length; i++) {
        printf("nums[%i] = %i\n",i, nums[i]);
    }
    return 0;
}
    原文作者:liyuhong165
    原文地址: https://www.jianshu.com/p/0e362c714aa0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞