<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    啪啪拉拉噼里啪啦

    初學者天堂資料匯集

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      16 隨筆 :: 73 文章 :: 16 評論 :: 0 Trackbacks

    2005年3月31日 #

    參考文獻
     1.C++Primer(第三版) Stanley B.Lippman, Josee Lajoie (中國電力出版社)
     2.C++語言程序設計(第二版) 鄭莉 董淵 (清華大學出版社)
     3.C++Primer Plus  Stephen Prata  (人民郵電出版社)
     4.C語言程序設計 譚浩強  清華大學出版社           

    C++是從C語言演變過來的,完全可以脫離C而從新學習C++

    #include<iostream.h>
    void main()
    {
      cout<<"welcome to C++ world !!"<<endl;
    }

    知識點1: *.h 文件被稱為頭文件.(標準的C++頭文件沒有后綴) 如iostream.h
                2.*.C 習慣稱之為C程序文本文件.(在UNIX系統(tǒng)下則稱之為C++文件) C++程序文件的后綴在不同產(chǎn)品中則不同 如 *.CPP  *.CXX...類似的頭文件在C++的不同實現(xiàn)中也不相同.
                3.#include 預處理器指示符
                4.#include<> 和#include "   " 區(qū)別
                   #include<>是標準或者工程文件.  #include" " 表示當前目錄下尋找.

    #ifdef   bookstore
    #define      bookstore
    #endif
    檢查bookstore是否在前面被定義了..
    #include<iostream.h>

    v1(int x,int y)
    {   cout<<"V1"<<endl;
        cout<<"{"<<endl;
     cout<<"x= "<<x<<endl;
     cout<<"y= "<<y<<endl;
     cout<<"}"<<endl;
    }

    v2(int x,int y)
    {   cout<<"V2"<<endl;
        cout<<"{"<<endl;
     cout<<"x= "<<x<<endl;
     cout<<"y= "<<y<<endl;
     cout<<"}"<<endl;
    }
    void main()
    {   int bug;
        #ifdef  bug
     cout<<"welcome to our  C++ world!!"<<endl;
     v1(2,5);
     v2(3,5);
    #endif
               

    posted @ 2005-04-28 12:26 噼里啪啦的世界 閱讀(851) | 評論 (0)編輯 收藏

    只要有地區(qū)發(fā)展不平衡,就難以最終杜絕地區(qū)歧視。“窮”絕對不是一件好事,更不是美好道德的源泉,相反,它只是刺激普遍人性中的普遍弱點:嫌貧愛富。

    深圳龍崗警方是政府所屬的執(zhí)法部門,今年3月份,竟在轄區(qū)內(nèi)懸掛橫幅“凡舉報河南籍團伙敲詐勒索犯罪、破獲案件的獎勵500元”,地區(qū)歧視赫然在目,令人難以置信。

    4月15日,兩位河南籍人士遠在鄭州向龍崗警方提起司法訴訟,驚動輿論,有朋友認為此舉做秀,意在吸引眼球。我的看法是,即使做秀,此類官司也值得打,打得贏要打,打不贏也要打。只有人人形成“秋菊性格”,強勢部門才能在百姓面前低頭,兩者之間才有可能形成正常關系———“法律面前人人平等”。社會公正不是長官恩賜的,也不是小民乞求的,而是一個一個“秋菊”起而抗議,一場一場官司“打”出來的。平民纏訟,尤其是纏強勢部門之訟,在過去要被譏諷為潑婦刁民、世風日下,在現(xiàn)代恰恰是公民意識覺醒的標志。

    但是,具體到地區(qū)歧視這一觀念,即使官司打贏了,河南人就能在全國改變他們被歧視的命運嗎?我的看法不樂觀。原因在于,地區(qū)性歧視在人類社會生活中普遍存在,并不植根于知識分子容易想到的文化“基因”或“國民性”問題,而是植根于人性的普遍弱點,這一弱點的起伏消長,是與社會發(fā)展不平衡聯(lián)系在一起的。

    我出生在上海,這個城市有一個公開秘密,也是這個城市的不文明標記:全城歧視蘇北人。上個世紀50年代,有兩個強力因素對蘇北人有利,似乎能抵消這一地區(qū)歧視:接管這個城市的南下干部不少人操蘇北口音,來自蘇北紅區(qū);從1949年到1976年的國家總理周恩來,操一口淮陰口音,愛看江淮戲,蘇北得不能再蘇北,全國民眾家喻戶曉。事實證明,強力因素無濟于事,政治歸政治,歧視歸歧視,生活的“污泥濁水”照樣奔流。上海的市民生活并不隱諱這一現(xiàn)象,但與主流意識形態(tài)的階級論不合,官方出版物始終不能正視。倒是兩個外國人,一個來自美國,一個來自德國,對這一現(xiàn)象發(fā)生研究興趣,以此為題撰寫社會學博士論文,在學界頗得好評,其中一位德國學者我還認識。

    我插隊在河南,求學在西安。到西安后,發(fā)現(xiàn)一個城市奇觀:半城皆鄉(xiāng)音,滿目河南人。不久即發(fā)現(xiàn),河南人再多,在西安還是被歧視,原因很簡單:他們大多是災荒年景的流民,以及流民的后代。

    這時我才想起在河南的經(jīng)歷,被歧視者內(nèi)部,還有更細一層的地區(qū)歧視,豫西人看不起豫東人。原因也相通:豫東自然條件惡劣,一旦發(fā)生災荒,豫東災民順隴海線向西流動,先經(jīng)過豫西,后到達西安。而在上海,被歧視的蘇北人內(nèi)部也有類似現(xiàn)象:揚州一帶的蘇北人看不起鹽城一代的蘇北人,甚至認為蘇北人在上海的不良形象是被后者敗壞的。原因驚人地相似:一旦發(fā)生災荒,鹽城阜寧一帶的災民順運河南下,先經(jīng)過揚州,再渡江到上海。

    鹽、阜相比揚州,不僅在地理上更“北方”,社會經(jīng)濟發(fā)展更落后,流民進上海后能夠找到的職業(yè)更低賤,由此被認為更“侉”,更粗野。發(fā)現(xiàn)地區(qū)歧視在中國普遍存在,一度使我心緒難平;再看到被歧視者內(nèi)部居然繼續(xù)劃分地區(qū)歧視,則使我沮喪無言。

    后來到哈佛大學短期訪問,發(fā)現(xiàn)地區(qū)歧視在美國白人內(nèi)部也存在。查爾斯河北畔的劍橋市,隱隱看不起河對岸波士頓地區(qū)的愛爾蘭人社區(qū)。我因為貪圖房租便宜,恰好住進了那個社區(qū),卻因為聽力不好,實在聽不出一河之隔的英語有什么口音差異。我曾請一個愛爾蘭裔的美國教授林琪以放大的口型,夸張的口氣,演示她的祖籍口音,才勉強聽出一點差別。令我驚訝的是,那個地區(qū)受人尊崇的肯尼迪總統(tǒng),并不是出身在查爾斯河的北岸,而是遭人歧視的南岸,恰好就在愛爾蘭社區(qū)。他去世后,按美國規(guī)矩為前總統(tǒng)建立的肯尼迪圖書館就建在我住處不遠的海邊,腳一抬就到,我曾無數(shù)次在那里留連。

    可惜總統(tǒng)歸總統(tǒng),歧視歸歧視,這就和周恩來的政治魅力無助于緩解上海對蘇北人的歧視差不多。林琪告訴我,這一歧視緣起19世紀中葉那場著名的馬鈴薯災荒,愛爾蘭人大批來北美新英格蘭地區(qū)乞討求生,地位低下,招人嫌棄。20世紀90年代愛爾蘭總理訪美,還特意要求在哈佛廣場的空地上塑造一組饑民哀號求救的銅像,以紀念那個可怕年月。林琪還告訴我,隨著愛爾蘭社區(qū)社會經(jīng)濟發(fā)展,這一歧視正在淡化,相比她記事的童年時代,現(xiàn)在已經(jīng)好多了,幾乎可以忽略不計,以致我要求她演示愛爾蘭口音時,她沒有絲毫不快,而是以開玩笑的心態(tài)在講解一個歷史故事,以及地區(qū)歧視發(fā)生的根本原因了。

    只要有地區(qū)發(fā)展不平衡,就難以最終杜絕地區(qū)歧視。這是一個令人很不愉快的現(xiàn)實,之所以不愉快,是因為它最終與一個“窮”字相連接。“窮”絕對不是一件好事,更不是美好道德的源泉,相反,它只是刺激普遍人性中的普遍弱點:嫌貧愛富。普遍人性普遍存在,地不分東、西,人不分黃、白,只要有地區(qū)發(fā)展不平衡,就會有河南人問題,蘇北人問題,乃至愛爾蘭人問題。而愛爾蘭人故事告訴我們的是:地區(qū)歧視當然不可取,更不能放縱這一觀念蔓延到執(zhí)法、司法行為,但只有從根本上消除地區(qū)發(fā)展的失衡,才能最終消解這一丑惡觀念。在這個意義上,我贊成“發(fā)展才是硬道理”,只是這個發(fā)展不能僅限于經(jīng)濟,應該包括文化,文化發(fā)展中最重要的一環(huán)不是改造“國民性”,而是實施實實在在的教育機會平等;還應該包括政治發(fā)展,政治發(fā)展中最重要一環(huán)是司法公正,在最終克服地區(qū)發(fā)展不平衡之前,首先要做到也可以做到的,是“法律面前人人平等”。

    作者:上海大學文學院教授朱學勤黃華

    posted @ 2005-04-24 22:06 噼里啪啦的世界 閱讀(1098) | 評論 (0)編輯 收藏

    import java.io.*;
    public class application01
    {
     
     public static void main(String[] args)
     {   char c=' ' ;
        String s="";
      System.out.println("Enter a character Please ");
      try
      { 
       BufferedReader in= new BufferedReader(new InputStreamReader(System.in));
       s=in.readLine();
      // c=(char)System.in.read();
      } catch(IOException e){};
      System.out.println("you''ve a  "+s);
      
     }
     
    }


      in= new BufferedReader(new InputStreamReader(System.in));
       s=in.readLi BufferedReader ne();
    posted @ 2005-04-17 07:31 噼里啪啦的世界 閱讀(969) | 評論 (0)編輯 收藏

    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;
    public class myjava01 extends Applet implements ActionListener
    {
     Label  p1;
     TextField input,output;
     public void init()
     {
      p1=new Label("請輸入您的名字");
            input=new TextField(10);
         output=new TextField(50);
      add(p1);
      add(input);
      add(output);
      input.addActionListener(this);
     }
     public void actionPerformed(ActionEvent e)
     {
           output.setText(input.getText()+",welcome to our world");
         }
    }



    本程序知識點:
    程序需要加載三個包
    import java.awt.event.*;
    import java.awt.*;
    import java.applet.*;
    凡是java.applet程序的 必須加載java.applet.* 包
    凡是使用圖形界面的    必須加載Java.awt包
    凡是使用圖形界面事件處理的 必須加載java.awt.event.*包

    程序定義的一個類,必須始Applet的子類 例如
    public class Applet01 extends  Applet  implements Actionlistener
    implements Actionlistener 還是一個動作事件的Action的監(jiān)聽者。

    init()是建立一個對象
    并用ADD() 加載到圖形界面中。。
    input.addActionListener(this) 注冊到監(jiān)聽者 否則程序不能響應回車鍵
    定義了一個acctionPerformed()方法。。。

    posted @ 2005-04-17 06:45 噼里啪啦的世界 閱讀(763) | 評論 (1)編輯 收藏

    jsp:include              頁面請求時候 引入一個文件
    jsp:usebean             尋找一個或?qū)嵗粋€javabean
    jsp:getProperty       輸出JVAVBEAN的屬性
    jsp:forward            把請求轉為一個新的頁面
    jsp:plugin                根據(jù)瀏覽器類型為java插件設置object 或Embed
    jsp:setProperty       設置JAVABEAN的屬性
    posted @ 2005-04-12 23:30 噼里啪啦的世界 閱讀(609) | 評論 (0)編輯 收藏

    常用的類
    BufferedReader
    BufferedWriter
    FileReader
    FileWirter
    String
    Integer

    常用的包
    java.lang
    java.awt
    java.io
    java.util
    java.sql
    常用的接口
    Remote
    List
    Map
    Doucment
    Nodelist
    posted @ 2005-04-12 23:23 噼里啪啦的世界 閱讀(1012) | 評論 (0)編輯 收藏

    標準建模語言UML,
    提供了 例圖,靜態(tài)圖(類圖,對象圖,包圖),行為圖,交互圖(順序圖,合作圖) 實現(xiàn)圖

    posted @ 2005-04-12 23:17 噼里啪啦的世界 閱讀(615) | 評論 (1)編輯 收藏

    JAVA DATA OBJECT... java對象持久化的新規(guī)范。
    存取某種數(shù)據(jù)倉庫中對象標準API  JDO提供透明的對象存儲。。。
    JDBC是面向關系的數(shù)據(jù)庫JDO更通用。
    posted @ 2005-04-12 23:14 噼里啪啦的世界 閱讀(746) | 評論 (0)編輯 收藏

    Struts 是基于JAVASERVELET/JSP技術的 web開發(fā)的開放源代碼的framwork。。。
    是基于MVC( MODEL-VIEW-CONTROLLER) 設計模式的應用架構
    1。包含一個controller servlet 能夠把用戶的請求發(fā)送到一個對應的Action對象
    2。包含了自用的tag庫。提供controller servlet 提供聯(lián)機幫戶 幫助開發(fā)人員創(chuàng)建交互式表單
    3。提供一些列使用對象。如 xml處理等。 java reflection APIS自動處理javabean

    posted @ 2005-04-12 23:10 噼里啪啦的世界 閱讀(605) | 評論 (0)編輯 收藏

    快速排序(QuickSort)

    1、算法思想
         快速排序是C.R.A.Hoare于1962年提出的一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法(Divide-and-ConquerMethod)。

    (1) 分治法的基本思想
         分治法的基本思想是:將原問題分解為若干個規(guī)模更小但結構與原問題相似的子問題。遞歸地解這些子問題,然后將這些子問題的解組合為原問題的解。

    (2)快速排序的基本思想
         設當前待排序的無序區(qū)為R[low..high],利用分治法可將快速排序的基本思想描述為:
    ①分解:
       
     在R[low..high]中任選一個記錄作為基準(Pivot),以此基準將當前無序區(qū)劃分為左、右兩個較小的子區(qū)間R[low..pivotpos-1)和R[pivotpos+1..high],并使左邊子區(qū)間中所有記錄的關鍵字均小于等于基準記錄(不妨記為pivot)的關鍵字pivot.key,右邊的子區(qū)間中所有記錄的關鍵字均大于等于pivot.key,而基準記錄pivot則位于正確的位置(pivotpos)上,它無須參加后續(xù)的排序。
      注意:
         劃分的關鍵是要求出基準記錄所在的位置pivotpos。劃分的結果可以簡單地表示為(注意pivot=R[pivotpos]):
         R[low..pivotpos-1].keys≤R[pivotpos].key≤R[pivotpos+1..high].keys
                      其中l(wèi)ow≤pivotpos≤high。
    ②求解:
        
    通過遞歸調(diào)用快速排序?qū)ψ蟆⒂易訁^(qū)間R[low..pivotpos-1]和R[pivotpos+1..high]快速排序。
    ③組合:
       
     因為當"求解"步驟中的兩個遞歸調(diào)用結束時,其左、右兩個子區(qū)間已有序。對快速排序而言,"組合"步驟無須做什么,可看作是空操作。

    2、快速排序算法QuickSort
      void QuickSort(SeqList R,int low,int high)
       { //對R[low..high]快速排序
         int pivotpos; //劃分后的基準記錄的位置
         if(low<high){//僅當區(qū)間長度大于1時才須排序
            pivotpos=Partition(R,low,high); //對R[low..high]做劃分
            QuickSort(R,low,pivotpos-1); //對左區(qū)間遞歸排序
            QuickSort(R,pivotpos+1,high); //對右區(qū)間遞歸排序
          }
        } //QuickSort

      注意:
         為排序整個文件,只須調(diào)用QuickSort(R,1,n)即可完成對R[l..n]的
    posted @ 2005-04-01 07:18 噼里啪啦的世界 閱讀(678) | 評論 (0)編輯 收藏

    交換排序的基本思想是:兩兩比較待排序記錄的關鍵字,發(fā)現(xiàn)兩個記錄的次序相反時即進行交換,直到?jīng)]有反序的記錄為止。
         應用交換排序基本思想的主要排序方法有:冒泡排序和快速排序。

    冒泡排序

    1、排序方法

         將被排序的記錄數(shù)組R[1..n]垂直排列,每個記錄R[i]看作是重量為R[i].key的氣泡。根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組R:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"。如此反復進行,直到最后任何兩個氣泡都是輕者在上,重者在下為止。
    (1)初始
         R[1..n]為無序區(qū)。

    (2)第一趟掃描
         從無序區(qū)底部向上依次比較相鄰的兩個氣泡的重量,若發(fā)現(xiàn)輕者在下、重者在上,則交換二者的位置。即依次比較(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);對于每對氣泡(R[j+1],R[j]),若R[j+1].key<R[j].key,則交換R[j+1]和R[j]的內(nèi)容。
         第一趟掃描完畢時,"最輕"的氣泡就飄浮到該區(qū)間的頂部,即關鍵字最小的記錄被放在最高位置R[1]上。

    (3)第二趟掃描

         掃描R[2..n]。掃描完畢時,"次輕"的氣泡飄浮到R[2]的位置上……
         最后,經(jīng)過n-1 趟掃描可得到有序區(qū)R[1..n]
      注意:
         第i趟掃描時,R[1..i-1]和R[i..n]分別為當前的有序區(qū)和無序區(qū)。掃描仍是從無序區(qū)底部向上直至該區(qū)頂部。掃描完畢時,該區(qū)中最輕氣泡飄浮到頂部位置R[i]上,結果是R[1..i]變?yōu)樾碌挠行騾^(qū)。

    2、冒泡排序過程示例
         對關鍵字序列為49 38 65 97 76 13 27 49的文件進行冒泡排序的過程【參見動畫演示

    3、排序算法
    (1)分析
         因為每一趟排序都使有序區(qū)增加了一個氣泡,在經(jīng)過n-1趟排序之后,有序區(qū)中就有n-1個氣泡,而無序區(qū)中氣泡的重量總是大于等于有序區(qū)中氣泡的重量,所以整個冒泡排序過程至多需要進行n-1趟排序。
         若在某一趟排序中未發(fā)現(xiàn)氣泡位置的交換,則說明待排序的無序區(qū)中所有氣泡均滿足輕者在上,重者在下的原則,因此,冒泡排序過程可在此趟排序后終止。為此,在下面給出的算法中,引入一個布爾量exchange,在每趟排序開始前,先將其置為FALSE。若排序過程中發(fā)生了交換,則將其置為TRUE。各趟排序結束時檢查exchange,若未曾發(fā)生過交換則終止算法,不再進行下一趟排序。

    (2)具體算法

      void BubbleSort(SeqList R)
       { //R(l..n)是待排序的文件,采用自下向上掃描,對R做冒泡排序
         int i,j;
         Boolean exchange; //交換標志
         for(i=1;i<n;i++){ //最多做n-1趟排序
           exchange=FALSE; //本趟排序開始前,交換標志應為假
           for(j=n-1;j>=i;j--) //對當前無序區(qū)R[i..n]自下向上掃描
            if(R[j+1].key<R[j].key){//交換記錄
              R[0]=R[j+1]; //R[0]不是哨兵,僅做暫存單元
              R[j+1]=R[j];
              R[j]=R[0];
              exchange=TRUE; //發(fā)生了交換,故將交換標志置為真
             }
           if(!exchange) //本趟排序未發(fā)生交換,提前終止算法
                 return;
         } //endfor(外循環(huán))
        } //BubbleSort
    posted @ 2005-04-01 07:17 噼里啪啦的世界 閱讀(294) | 評論 (0)編輯 收藏

     希爾排序(Shell Sort)是插入排序的一種。因D.L.Shell于1959年提出而得名。

    希爾排序基本思想

      基本思想:
         先取一個小于n的整數(shù)d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為dl的倍數(shù)的記錄放在同一個組中。先在各組內(nèi)進行直接插人排序;然后,取第二個增量d2<d1重復上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進行直接插入排序為止。
         該方法實質(zhì)上是一種分組插入方法。

    給定實例的shell排序的排序過程

         假設待排序文件有10個記錄,其關鍵字分別是:
            49,38,65,97,76,13,27,49,55,04。
         增量序列的取值依次為:
            5,3,1
         排序過程如【動畫模擬演示】。

    Shell排序的算法實現(xiàn)

    1. 不設監(jiān)視哨的算法描述

      void ShellPass(SeqList R,int d)
       {//希爾排序中的一趟排序,d為當前增量
         for(i=d+1;i<=n;i++) //將R[d+1..n]分別插入各組當前的有序區(qū)
           if(R[i].key<R[i-d].key){
             R[0]=R[i];j=i-d; //R[0]只是暫存單元,不是哨兵
             do {//查找R[i]的插入位置
                R[j+d];=R[j]; //后移記錄
                j=j-d; //查找前一記錄
             }while(j>0&&R[0].key<R[j].key);
             R[j+d]=R[0]; //插入R[i]到正確的位置上
           } //endif
       } //ShellPass

      void  ShellSort(SeqList R)
       {
        int increment=n; //增量初值,不妨設n>0
        do {
              increment=increment/3+1; //求下一增量
              ShellPass(R,increment); //一趟增量為increment的Shell插入排序
           }while(increment>1)
        } //ShellSort
      注意:
         當增量d=1時,ShellPass和InsertSort基本一致,只是由于沒有哨兵而在內(nèi)循環(huán)中增加了一個循環(huán)判定條件"j>0",以防下標越界。

    2.設監(jiān)視哨的shell排序算法
         具體算法【參考書目[12] 】

    算法分析

    1.增量序列的選擇

         Shell排序的執(zhí)行時間依賴于增量序列。
         好的增量序列的共同特征:
      ① 最后一個增量必須為1;
      ② 應該盡量避免序列中的值(尤其是相鄰的值)互為倍數(shù)的情況。
         有人通過大量的實驗,給出了目前較好的結果:當n較大時,比較和移動的次數(shù)約在nl.25到1.6n1.25之間。

    2.Shell排序的時間性能優(yōu)于直接插入排序
         希爾排序的時間性能優(yōu)于直接插入排序的原因:
      ①當文件初態(tài)基本有序時直接插入排序所需的比較和移動次數(shù)均較少。
      ②當n值較小時,n和n2的差別也較小,即直接插入排序的最好時間復雜度O(n)和最壞時間復雜度0(n2)差別不大。
      ③在希爾排序開始時增量較大,分組較多,每組的記錄數(shù)目少,故各組內(nèi)直接插入較快,后來增量di逐漸縮小,分組數(shù)逐漸減少,而各組的記錄數(shù)目逐漸增多,但由于已經(jīng)按di-1作為距離排過序,使文件較接近于有序狀態(tài),所以新的一趟排序過程也較快。
         因此,希爾排序在效率上較直接插人排序有較大的改進。

    3.穩(wěn)定性
         希爾排序是不穩(wěn)定的。參見上述實例,該例中兩個相同關鍵字49在排序前后的相對次序發(fā)生了變化。
    posted @ 2005-04-01 07:16 噼里啪啦的世界 閱讀(181) | 評論 (0)編輯 收藏

    插入排序(Insertion Sort)的基本思想是:每次將一個待排序的記錄,按其關鍵字大小插入到前面已經(jīng)排好序的子文件中的適當位置,直到全部記錄插入完成為止。
         本節(jié)介紹兩種插入排序方法:直接插入排序和希爾排序。

    直接插入排序基本思想

    1、基本思想

         假設待排序的記錄存放在數(shù)組R[1..n]中。初始時,R[1]自成1個有序區(qū),無序區(qū)為R[2..n]。從i=2起直至i=n為止,依次將R[i]插入當前的有序區(qū)R[1..i-1]中,生成含n個記錄的有序區(qū)。

    2、第i-1趟直接插入排序:
         通常將一個記錄R[i](i=2,3,…,n-1)插入到當前的有序區(qū),使得插入后仍保證該區(qū)間里的記錄是按關鍵字有序的操作稱第i-1趟直接插入排序。
         排序過程的某一中間時刻,R被劃分成兩個子區(qū)間R[1..i-1](已排好序的有序區(qū))和R[i..n](當前未排序的部分,可稱無序區(qū))。
         直接插入排序的基本操作是將當前無序區(qū)的第1個記錄R[i]插人到有序區(qū)R[1..i-1]中適當?shù)奈恢蒙希筊[1..i]變?yōu)樾碌挠行騾^(qū)。因為這種方法每次使有序區(qū)增加1個記錄,通常稱增量法。
         插入排序與打撲克時整理手上的牌非常類似。摸來的第1張牌無須整理,此后每次從桌上的牌(無序區(qū))中摸最上面的1張并插入左手的牌(有序區(qū))中正確的位置上。為了找到這個正確的位置,須自左向右(或自右向左)將摸來的牌與左手中已有的牌逐一比較。

    一趟直接插入排序方法

    1.簡單方法

         首先在當前有序區(qū)R[1..i-1]中查找R[i]的正確插入位置k(1≤k≤i-1);然后將R[k..i-1]中的記錄均后移一個位置,騰出k位置上的空間插入R[i]。
      注意:
         若R[i]的關鍵字大于等于R[1..i-1]中所有記錄的關鍵字,則R[i]就是插入原位置。

    2.改進的方法
      一種查找比較操作和記錄移動操作交替地進行的方法。
    具體做法:
         將待插入記錄R[i]的關鍵字從右向左依次與有序區(qū)中記錄R[j](j=i-1,i-2,…,1)的關鍵字進行比較:
         ① 若R[j]的關鍵字大于R[i]的關鍵字,則將R[j]后移一個位置;
          ②若R[j]的關鍵字小于或等于R[i]的關鍵字,則查找過程結束,j+1即為R[i]的插入位置。
         關鍵字比R[i]的關鍵字大的記錄均已后移,所以j+1的位置已經(jīng)騰空,只要將R[i]直接插入此位置即可完成一趟直接插入排序。

    直接插入排序算法

    1.算法描述

      void lnsertSort(SeqList R)
       { //對順序表R中的記錄R[1..n]按遞增序進行插入排序
        int i,j;
        for(i=2;i<=n;i++) //依次插入R[2],…,R[n]
          if(R[i].key<R[i-1].key){//若R[i].key大于等于有序區(qū)中所有的keys,則R[i]
                                  //應在原有位置上
            R[0]=R[i];j=i-1; //R[0]是哨兵,且是R[i]的副本
            do{ //從右向左在有序區(qū)R[1..i-1]中查找R[i]的插入位置
             R[j+1]=R[j]; //將關鍵字大于R[i].key的記錄后移
             j-- ;
             }while(R[0].key<R[j].key); //當R[i].key≥R[j].key時終止
            R[j+1]=R[0]; //R[i]插入到正確的位置上
           }//endif
       }//InsertSort

    posted @ 2005-04-01 07:15 噼里啪啦的世界 閱讀(332) | 評論 (0)編輯 收藏

    1.選擇排序
       選擇排序(Selection Sort)的基本思想是:每一趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排好序的子文件的最后,直到全部記錄排序完畢。
         常用的選擇排序方法有直接選擇排序和堆排序。

    直接選擇排序(Straight Selection Sort)

    1、直接選擇排序的基本思想

         n個記錄的文件的直接選擇排序可經(jīng)過n-1趟直接選擇排序得到有序結果:
     ①初始狀態(tài):無序區(qū)為R[1..n],有序區(qū)為空。
     ②第1趟排序
         在無序區(qū)R[1..n]中選出關鍵字最小的記錄R[k],將它與無序區(qū)的第1個記錄R[1]交換,使R[1..1]和R[2..n]分別變?yōu)橛涗泜€數(shù)增加1個的新有序區(qū)和記錄個數(shù)減少1個的新無序區(qū)。
      ……
     ③第i趟排序
      第i趟排序開始時,當前有序區(qū)和無序區(qū)分別為R[1..i-1]和R[i..n](1≤i≤n-1)。該趟排序從當前無序區(qū)中選出關鍵字最小的記錄R[k],將它與無序區(qū)的第1個記錄R[i]交換,使R[1..i]和R[i+1..n]分別變?yōu)橛涗泜€數(shù)增加1個的新有序區(qū)和記錄個數(shù)減少1個的新無序區(qū)。
         這樣,n個記錄的文件的直接選擇排序可經(jīng)過n-1趟直接選擇排序得到有序結果。

    2、直接選擇排序的過程
      對初始關鍵字為49、38、65、97、76、13、27和49的文件進行直接選擇排序的過程【參見動畫演示

    3、算法描述
      直接選擇排序的具體算法如下:
     void SelectSort(SeqList R)
     {
       int i,j,k;
       for(i=1;i<n;i++){//做第i趟排序(1≤i≤n-1)
         k=i;
         for(j=i+1;j<=n;j++) //在當前無序區(qū)R[i..n]中選key最小的記錄R[k]
           if(R[j].key<R[k].key)
             k=j; //k記下目前找到的最小關鍵字所在的位置
           if(k!=i){ //交換R[i]和R[k]
             R[0]=R[i];R[i]=R[k];R[k]=R[0]; //R[0]作暫存單元
            } //endif
         } //endfor
      } //SeleetSort

    4、算法分析
    (1)關鍵字比較次數(shù)
         無論文件初始狀態(tài)如何,在第i趟排序中選出最小關鍵字的記錄,需做n-i次比較,因此,總的比較次數(shù)為:
         n(n-1)/2=0(n2)

    (2)記錄的移動次數(shù)
         當初始文件為正序時,移動次數(shù)為0
         文件初態(tài)為反序時,每趟排序均要執(zhí)行交換操作,總的移動次數(shù)取最大值3(n-1)。
         直接選擇排序的平均時間復雜度為O(n2)。

    (3)直接選擇排序是一個就地排序

    (4)穩(wěn)定性分析
         直接選擇排序是不穩(wěn)定的

    2.冒泡排序
    3.字符轉換
    posted @ 2005-04-01 07:15 噼里啪啦的世界 閱讀(703) | 評論 (2)編輯 收藏

    1 什么叫作用域?什么叫局部變量?什么叫全局變量?、
    作用域是一個標識符在程序正文中有效的的區(qū)域。
    局部變量具有塊作用域的變量
    全局變量具有文件作用域的變量

    變量有那幾種存儲類型

    auto  采用堆棧方式分配內(nèi)存空間,屬于暫時性存儲,其存儲空間可以被若干變量多次覆蓋使用
    register 存儲類型  存放在寄存器中
    extern  所有程序和函數(shù)段都可引用
    static  在內(nèi)存中固定地址存放 整個程序運行期間都有效。。
    posted @ 2005-04-01 07:08 噼里啪啦的世界 閱讀(127) | 評論 (0)編輯 收藏

    恭喜一下,這是自己的第一個標題....希望大家能夠被接受!
    posted @ 2005-03-31 09:19 噼里啪啦的世界 閱讀(178) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 最新仑乱免费视频| 四虎永久免费地址在线网站| 黄+色+性+人免费| 国产精品视_精品国产免费| 色噜噜亚洲精品中文字幕| 亚洲国产精品日韩在线| 人碰人碰人成人免费视频| 国产四虎免费精品视频| 亚洲福利一区二区| 深夜久久AAAAA级毛片免费看| 免费国产成人午夜电影| 亚洲性色成人av天堂| 很黄很黄的网站免费的| 亚洲卡一卡二卡乱码新区| 国产成人免费AV在线播放| 国产乱子伦精品免费女| 黄色免费网站在线看| 无码国产精品一区二区免费 | 亚洲第一页在线观看| 成人免费的性色视频| 亚洲综合激情五月色一区| 免费一级不卡毛片| 亚洲人成无码www久久久| 亚洲精品无码成人| 亚洲三级高清免费| 亚洲av无一区二区三区| 永久免费AV无码国产网站| 亚洲人成在线影院| 三年片免费观看大全国语| 免费一级毛片免费播放| 中文字幕在线免费视频| 亚洲黄色免费电影| 无码人妻精品中文字幕免费| 亚洲人成网77777色在线播放| 女人裸身j部免费视频无遮挡| 永久免费观看的毛片的网站| 亚洲熟妇AV日韩熟妇在线| 亚洲av手机在线观看| 亚洲精品亚洲人成在线麻豆| 无码日韩人妻av一区免费| 一个人看的免费视频www在线高清动漫|