譚浩強先生C言語プログラム設計重要アルゴリズム総括

1364 ワード

第六章配列
はっぽうほう
基本思想:隣接する2つの数を比較するたびに、小さい数を先頭に(昇順配列の要求ですから!)し、1回が完了したら、次の2つの隣接比較を行います.
#include
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]);
}

2 D配列の列を入れ替え、別の2 D配列に保存
#include
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("
"); } }

2 D配列の最大要素のリングアルゴリズム
#include
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("
"); } printf("%d %d %d", row, colum, max); }