二維數組的排序


題目

/* 實驗內容:
 輸入是16個整數,存放到4*4的二維數組中,用冒泡法按從大到小的順序進行排序,
 然后輸出。要求輸入、排序、輸出各個環節都要用到指向數組的指針,
 其中排序環節交換數據要求用自定義的swap(int *p1,int *p2)函數實現。*/

切入點

知識點:其實n維數組都是以一位數組的方式存儲的,所以我們就可以用一維數組的方法法解決n維數組的排序問題

解決方案

#include <stdio.h>

void swap(int *p1,int *p2);

int main()
{

	int num[4][4];
	int (*p)[4]=num;
	int col,row;
	

	//輸入
	for(row=0;row<4;row++)
	{
		for(col=0;col<4;col++)
		{
			scanf("%d",(*(p+row)+col));
		}
	}

	
	/*
	for(int i=0;i<16;i++)
	{
		printf("%d ",*(*num+i));
	}*/


	//打印輸入
	printf("輸入結果:\n");
	for( row=0;row<4;row++)
	{
		for(int col=0;col<4;col++)
		{
			printf("%d ",*(*(num+row)+col) );
		}
		printf("\n");
	}
	

	//排序
	for(int i=0;i<15;i++)
		for(int j=0;j<15-i;j++)
		{
			// < 則是從大到小
			if( *(*num+j) > *(*num+j+1))
			swap((*num+j),(*num+j+1));
		}


	printf("輸出結果:\n");
	for( row=0;row<4;row++)
	{
		for(int col=0;col<4;col++)
		{
			printf("%d ",*(*(num+row)+col) );
		}
		printf("\n");
	}
	
	return 0;
}

void swap(int *p1,int *p2)
{
	int p;
	p = *p1;
	*p1 = *p2;
	*p2 = p;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM