逆序排列

GJ504b發表於2024-09-28

陣列的逆序排列【arr>arr+1】

特別鳴謝:@搬磚界泰斗這隻小狐狸

/*逆序排列*/
#include <stdio.h>
int main(){
 int arr[]={12,23,34,45,43,32,43,45,24};//陣列初始化
int sz = sizeof(arr)/sizeof(arr[0]); //sz計算出陣列中子級個數
//運算:sizeof()
//arr:總地址byte/一個地址byte==sz
int i,j,max,tmp;
for(i=0;i<= sz-1;i++){
//arr[0]是arr[]裡的第一個子級元素,有sz個子級元素,所以退出迴圈的條件是i<=sz-1?
//這裡涉及演算法:實際  不取等  更加簡潔
//--比如四個數字,1 4 2 3,你只需要第一個數字和第二個比較,第二個數字和第三個比較,第三個數字和第四個比較,三次就好!
	max = i;//max存入i的值
	for(j = i+1;j < sz;j++){
		if(arr[max]<arr[j]){//每一次的arr與arr+1的比較
			max=j;//保留大的數字,
		}
	}//記錄較大的子級數字
	tmp = arr[max];
	arr[max]=arr[i];
	arr[i]=tmp;//調節arr與arr+1的順序
}//i來控制確定陣列裡的子級,使得遍歷所有子級數
for(i=0;i< sz;i++){
	printf("%d ",arr[i]);
}//輸出陣列【直接背格式】
return 0;
}

相關文章