字符串數組的冒泡排序,從小到大
//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;
}
結果如圖,本題有前面的冒泡排序程序改寫