应用冒泡排序思想,实现数阵中数字的移动过程
源码:
1: #include <stdio.h>
2:
3: void getStep(int m[]) /*显示数阵中数字移动的步骤*/
4: {
5: int i, j, tmp;
6: for(i = 0; i < 7; i++) /*冒泡排序*/
7: for(j = 0; j < 7 - i; j++)
8: if(m[j] >= m[j+1])
9: {
10: tmp = m[j];
11: m[j] = m[j+1];
12: m[j+1] = tmp; /*数据的交换*/
13: printf("(%d# --> 0#)\n", j + 1);
14: printf("(%d# --> %d#)\n", j + 2, j + 1);
15: printf("(0# --> %d#)\n", j + 2); /*输出移动步骤*/
16: }
17: printf("\n");
18: }
19:
20: void Print(int m[]) /*打印出当前数阵的状态*/
21: {
22: printf(" [%d]--[%d]--[%d]\n", m[0], m[1], m[2]);
23: printf(" | %c | %c | \n", 92, 47);
24: printf(" [%d]--[ ]--[%d]\n", m[7], m[3]);
25: printf(" | %c | %c | \n", 47, 92);
26: printf(" [%d]--[%d]--[%d]\n", m[6], m[5], m[4]);
27: }
28:
29: int main()
30: {
31: int i , m[8];
32: printf("Please input 8 integer (1~8) to arrange this matrix\n");
33: for(i = 0; i < 8; i++)
34: scanf("%d", &m[i]);
35: printf("The initial data matrix is like\n");
36: Print(m);
37: printf("\nMove Step:\n");
38: getStep(m);
39: printf("The result of moving is\n");
40: Print(m);
41: return 0;
42: }