数据结构: C语言实现冒泡排序算法

C语言实现冒泡排序算法:

                                                                               表一


                       表二

:表一是冒泡排序的过程;表二是对冒泡法的优化

#include<stdio.h>
#include<stdlib.h>

void swap(int* number, int i, int j);

int main()
{
    int number[100];
    int quantity;
    int m = 0;
    int n = 0;
    int i = 0, j = 0;
    int flag = 1;//flag用来作为标记
    printf("Please Enter how many you want to input numbers:\n");
    scanf("%d", &quantity);
    printf("Please Input %d number:\n", quantity);
    for(m = 1; m <= quantity; m++)
    {
        scanf("%d", &n);
        number[m] = n;
    }

    for(i = 1; i < quantity && flag == 1; i++)//当flag标记为1时继续循环,否则退出循环
    {
        flag = 0;//flag初始化为0
        for(j = quantity - 1; j >= i; j--)
        {
            if(number[j] > number[j+1])
            {
                swap(number, j, j+1);
                flag = 1;//程序如果执行到此步,说明数据有交换,flag标记为1
            }
        }
    }
    printf("\n数据从小到大的顺序如下:\n");
    for(m = 1; m <= quantity; m++)
    {
        printf("%d ", number[m]);
    }
    printf("\n");

    return 0;
}

void swap(int* number, int i, int j)
{
    int temp;
    temp = number[i];
    number[i] = number[j];
    number[j] = temp;
}


猜你喜欢

转载自blog.csdn.net/weixin_41588502/article/details/80572490