第六章 数组
冒泡法(起泡法)
基本思想:每次将相邻两个数比较,将小的数调到前头(因为是升序排列的要求!),完成一趟后,进行下一趟的两两相邻比较。
#include<stdio.h>
int main() {
int a[10];
int i, j, t;
for (i = 0; i < 10; i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for (j = 0; j < 9 - i; j++) //内层for循环处理的是每一趟的数据元素的比较
{
if (a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
}
二维数组行列互换,存到另一个二维数组中
#include<stdio.h>
int main() {
int a[2][3] = { {1,2,3},{4,5,6} };
int b[3][2], i, j;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
b[j][i] = a[i][j];
for (i = 0; i < 3; i++)
{
for (j = 0; j < 2; j++)
printf("%d ", b[i][j]);
printf("\n");
}
}
二维数组中最大元素的擂台赛算法
#include<stdio.h>
int main() {
int a[3][4] = { {1,2,3,4},{5,6,7,8},{-10,10,-5,2} };
int max = a[0][0];
int i, j, row = 0, colum = 0;
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
if (a[i][j] > max)
{
max = a[i][j];
row = i;
colum = j;
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
printf("%d ", a[i][j]);
printf("\n");
}
printf("%d %d %d", row, colum, max);
}