1. 程式人生 > >學習總結3

學習總結3

1陣列知識點
一維陣列 一維陣列的定義
儲存型別 資料型別 陣列名 [整數1]…[整數n],例如:int a[100],要注意下標從0開始,a[0]…a[99]。說明陣列時元素個數一定要為常量。陣列的排序有選擇排序、插入排序、氣泡排序。陣列排序還有一個函式sort,預設sort函式為升序,sort(a,a+n)。二維陣列與一維陣列類似,例如int a[5][6],格式為 陣列名[下標1][下標2]。
2 解決問題
有趣的跳躍那個題的排序我用的選擇排序:
for(int i=0;i<n-1;i++)
{
for(int j=0;j<=n-1;j++)
if(a[i]>a[j])
temp=a[i];
a[i]=a[j];
a[j]=temp;}
這樣就是升序了。
也可用氣泡排序
for (int j=1; j<=n-1; ++j)
  for (int i=1; i<=n-j; ++i)
if (a[i]<a[i+1])
  {swap(a[i]),a[i+1])}
這樣就達到降序的目的啦。
找配對數的那個題我用的是三個迴圈
for(j=1;j<=n;j++)
for(k=j+1;k<=n;k++)
for(m=k+1;m<=n;m++)
這樣可能會超時,因此第三個迴圈可以二分查詢,用二分查詢的方法以防超時。
倒置排序的那個題先是倒序用
while(c!=0)
{s=s10+c%10;
c=c/10;}
b[j]=s;
然後再是排序
計算鞍點的那個題,是二維陣列的運用,求每一行的最大值與每一列的最小值,
for ( i = 0; i < N; i++) {
Max = a[i][0]; 表示每一行的第一個數
for ( j = 0; j < N; j++) {
if (a[i][j]>=Max) {
X= i;
Y= j;
Max = a[i][j];
}
}
Min = Max;
for (int k = 0; k < N; k++) {每一行數最大 的
if (a[k][Y] < Min) 一列 求一列數中的
Min = a[k][Y]; 最小 數
掃雷的那個遊戲的題,我是用的兩個二維陣列,一個字元陣列、一個整型陣列,令整型陣列全為0,然後是地雷的

的輸出字元*,不是地雷的用整型陣列。
3感想
陣列這個知識應用更廣泛,但是陣列這個的題理解做起來更加困難,例如對我來說陣列後面的那幾個題很是難做,例如矩形變換,反反覆覆等題,做這種比較複雜的題,我都會看很多遍,矩形變換這種題主要的是要找規律,90度旋轉之後陣列下標怎麼變得等,找出規律之後就比較容易做啦。做複雜的題重要的是要有耐心,我在做很多遍都不對的時候,心裡就很是煩躁,但越煩也就越做不出來,所以寫複雜又比較長的程式碼是最重要的就是要平心靜氣的,有耐心。