原創| 輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。


思路:
 
 2 5 8 2 8 1 1 9
 
最小的一個元素是1,最大的一個元素是9
 
用*min來指向最小的那個元素。初始化的時候,*min指向第一個元素,指向2.
 
這個用一個暫存的變量temp1來存儲最小值,初始值指向第一個元素。temp的作用是可以用來不斷進行值比較。
 
通過for循環遍歷數組,找到最小的那個值,便記下最小值的位置(因為最小值可以有重復的,記前面那個即可)。
 
這樣有temp=*min;
 
(還有一種方法的時間復雜度為O(n!));
 
用*max來指向最大的那個元素。初始化的時候,*max指向第一個元素,指向2.
 
這個用一個暫存的變量temp2來存儲最大值,初始值指向第一個元素。temp2的作用是可以用來不斷進行值比較。
 
通過for循環遍歷數組,找到最大的那個值,便記下最大值的位置(因為最大值可以有重復的,記前面那個即可)。
 
這樣有temp=*max;
 
最后便是交換函數,用來實現數組交換的。
 
將*min和a[0]交換
將*max和a[1]交換。
 
將數組輸出出來。
 
 
public void transfer(int []a){
int min=0; //默認位置指向第一位
int max=0; //默認位置指向第一位
int temp1=a[0];
int temp2=a[0];
//找最小的數;
for(int i=1;i<a.length;i++){
if(a[i]<temp1){
temp1=a[i];
min=i;
}
}

//找最大的數;
for(int i=1;i<a.length;i++){
if(a[i]>temp2){
temp2=a[i];
max=i;
}
}
//最大的數跟第一個元素交換
for(int i=0;i<a.length;i++){
int temp3=a[max];
a[max]=a[0];
a[0]=temp;
}
//最小的數跟最后一個元素交換
for(int i=0;i<a.length;i++){
int temp=a[min];
a[min]=a[a.length-1];
a[a.length-1]=temp;
}
for(int i=0;i<a.length;i++){
System.out.println(a[i]+" ");
}
}

 

 
本人微信:a25828119.有問題歡迎交流~


免責聲明!

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



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