谭浩强老师C语言程序设计重要算法总结

第六章 数组

冒泡法(起泡法)

基本思想:每次将相邻两个数比较,将小的数调到前头(因为是升序排列的要求!),完成一趟后,进行下一趟的两两相邻比较。

#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);

}
发布了33 篇原创文章 · 获赞 1 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/futurech/article/details/99702783