筆記2

   Ⅰ.找數組中最大數算法:

          提供幾種思路:

         ① 用類似於比較大小的方法,從數組的第一個開始,與其他數比較,用一個整型數來表示布爾量,若這個數大於之後的任意一個數,那麼布爾量爲1(通過),否則0(失敗),且從第二個數繼續開始,以此類推。

          用這種思路要考慮一個特殊情況:到最後一個數之前,還未通過,則最後一個數爲最大的

            這種方法呆板,且有個個特殊情況,不方便,但思路簡單

         ② 設置一個max量, max量被賦值爲第一個數,往數組後走,只要大於這個max的量,就進行交換。

        代碼:

#include<stdio.h>
main()
{
    int a[10]={1,2,3,4,5,44,7,8,9,10};
    int i;
    int max,maxb;
    max=a[0];maxb=0;
    for(i=0;i<10;i++)
    {
        if(a[i]>max)
        {
            max=a[i];
            maxb=i;
        }
    }
    
    printf("max=%d  ,   is  %d\n",max,maxb+1);
return 0;
}
 

          這種方法我覺得更簡單,而且無特殊情況

      ③ 直接排序

            利用排序的方法(代碼),雙重循環即可

                  int a[n];//這樣子對一些老的編譯器可能不合適

                 for(i=1;i<n-1;i++)//注意這裏不必到最後一個數,直到倒數第二個排好,就ok

                      for(j=i+1;j<=n-1;j++)

                           if(a[i]>a[j]){

                             temp=a[i];

                             a[i]=a[j];

                              a[j]=temp;

              }//從小到大

   這種方法對後面的衍生題有用

    衍生題:找出第二大的數,第三大的數,和第二小的數

              這種的話,最方便的就是用第二種方法,直接對應即可。

              而用第二種思路,方法也是很巧妙,思路是讓第二大的數跟着最大的數走,結束爲止

             但不是很方便求第三大,第二小。。。


  Ⅱ.閏年(這個煩死了,做個筆記,下次懶得翻)

            if(y%4==0&&y%100!=0||y%400==0) i=29;

            else i=28;

              就是兩種情況:能被4整除同時不能被100整除或者能被400整除。

 

         

       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章