字符串數組的冒泡排序,從小到大(冒泡法前幾篇有例子)

字符串數組的冒泡排序,從小到大

//main.c
//author
//連續輸入是個字符,以回車結束
#include "stdafx.h"
//輸入10個數字
#define N 10
char min(char a, char b);
char max(char a, char b);
int main()
{
    //int a[N] = { 10,9,8,7,6,5,4,3,2,1 };
    int flag = N;
    //指針的方法
    char a[N] = { 0 };
    char *p = a;
    for (int i = 0; i < N; i++)
    {
        scanf_s("%c", p);
        p++;
    }
    p = &a[0];
    for (int i = 0; i < N; i++)
    {
        printf("輸入的數爲%c\n", *p++);
    }
    p = a;
    while (1)
    {
        for (int i = 0; i < flag - 1; i++)
        {
            char tmp1 = *(p + i);
            char tmp2 = *(p + i + 1);
            *(p + i) = min(tmp1, tmp2);
            *(p + i + 1) = max(tmp1, tmp2);
        }
        if (flag == 2)break;
        flag--;
    }
    p = a;
    for (int i = 0; i < N; i++)
    {
        printf("%c ", *(p + i));
    }
    //數組的方法
    /*while (1)
    {
    for (int i = 0; i < flag - 1; i++)
    {
    int tmp1 = a[i];
    int tmp2 = a[i + 1];
    a[i + 1] = max(tmp1, tmp2);
    a[i] = min(tmp1, tmp2);
    }

    if (flag == 2)break;
    flag--;
    }
    for (int i = 0; i < N; i++)
    {
    printf("%d ", a[i]);
    }*/
    return 0;
}
char max(char a, char b)
{
    return a > b ? a : b;
}
char min(char a, char b)
{
    return a < b ? a : b;
}

結果如圖,本題有前面的冒泡排序程序改寫
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章