• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            馬賽克007歡迎你

            htt://shexinwei.blogbus.com

            http://www.shnenglu.com/shexinwei

            感謝大家的支持

            置頂隨筆

            [置頂]快速排序(C++)

              1 //版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
              2 //http://shexinwei.blogbus.com/logs/74827291.html
              3 
              4 
              5 /*
              6 
              7 Subject:      Quick sort
              8 
              9 Author:       shexinwei
             10 
             11 School:       xidian university
             12 
             13 Date:         2010-09-12
             14 
             15 Laguage:      C++
             16 
             17 IDE | Tool:   GCC
             18 
             19 Version:      1.0
             20 
             21 Modify Time:  2010-09-12
             22 
             23 */    
             24 
             25 #include <iostream>
             26 
             27 using namespace std;
             28 
             29 int sort(int begin,int end,int data[],int n);
             30 
             31 int recurs(int begin,int end,int data[],int n);
             32 
             33 int print(int data[],int n);
             34 
             35 int main()
             36 
             37 {
             38 
             39     int data[] = {20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
             40 
             41     //打印初始序列
             42 
             43     print(data,20);
             44 
             45     //遞歸排序
             46 
             47     recurs(0,19,data,20);
             48 
             49     //打印最終序列    
             50 
             51     print(data,20);
             52 
             53     cout<<endl;
             54 
             55         return 1;
             56 
             57 }
             58 
             59  
             60 
             61 //打印序列
             62 
             63 int print(int data[],int n)
             64 
             65 {
             66 
             67     for(int i = 0;i<n;i++)
             68 
             69         cout<<data[i]<<" ";
             70 
             71     cout<<endl;
             72 
             73     return 1;
             74 
             75 }
             76 
             77  
             78 
             79  
             80 
             81 int sort(int begin,int end,int data[],int n)
             82 
             83 {
             84 
             85     //選擇最后一位做初始的中樞
             86 
             87     int pos = end;
             88 
             89     int key  = data[end];
             90 
             91     //索引初始化
             92 
             93     int front = begin;
             94 
             95     int last = end;
             96 
             97     for(;front != last;front++)
             98 
             99     { //向后查找
            100 
            101  
            102 
            103         if((data[front] < key) || (data[front] == key)) continue;
            104 
            105         else
            106 
            107         { //遇到比中樞值大的元素,交換位置,修改pos的值,并開始從后向前找
            108 
            109             data[pos] = data[front];
            110 
            111             pos = front;
            112 
            113             //以下一句可注釋,只需要保存中樞的位置,可以不修改值,因中樞值在key中保存,最后找到最終位置后再賦值即可
            114 
            115             data[pos] = key;     
            116 
            117             //輸出改變一次后的序列
            118 
            119             print(data,n);
            120 
            121             for(;front != last;last--)
            122 
            123             {//從后向前查找
            124 
            125                 if((data[last] > key)||(data[last] == key)) continue;
            126 
            127                 else
            128 
            129                 { //遇到比中樞值小的元素,交換位置,修改pos值,并重新開始從前向后查找
            130 
            131                    data[pos] = data[last];
            132 
            133                    pos = last;
            134 
            135                  //以下一句可注釋,只需要保存中樞的位置,可以不修改值,因中樞值在key中保存,最后找到最終位置后再賦值即可
            136 
            137                        data[pos] = key;
            138 
            139                  //打印修改以后的序列
            140 
            141                    print(data,n); 
            142 
            143                  //重新開始從前向后查找
            144 
            145                    break;
            146 
            147                 }
            148 
            149             }
            150 
            151             
            152 
            153         }
            154 
            155         //如果從后向前已經使得front==last,那么一趟分割完畢
            156 
            157         if(front == last) break;
            158 
            159     }
            160 
            161     data[pos] = key;
            162 
            163     return pos;
            164 
            165 }
            166 
            167 int recurs(int begin,int end,int data[],int n)
            168 
            169 {
            170 
            171     //遞歸出口
            172 
            173     if((begin == end) || (begin > end)) return 1;
            174 
            175     else
            176 
            177     {
            178 
            179     //做分割
            180 
            181     int index = sort(begin,end,data,n);
            182 
            183     //前一部分遞歸
            184 
            185     recurs(begin,index-1,data,n);
            186 
            187     //后一部分遞歸
            188 
            189     recurs(index+1,end,data,n);
            190 
            191     }
            192 
            193 }

            posted @ 2010-09-12 17:02 馬賽克007 閱讀(4516) | 評論 (1)編輯 收藏

            2010年10月6日

            字符串刪除子串(C++)

            #include <iostream>
            using namespace std;

            int main()
            {
                
            char str[50= {0};
                
            char subStr[10= {0};

                
            //輸入主串以#結尾
                cout<<"input the string:";
                
            for(int i = 0;i<sizeof(str)/sizeof(str[0]);i++)
                {
                    cin
            >>str[i];
                    
            if(str[i] == '#')
                    {
                        str[i] 
            = '\0';
                        
            break;
                    }
                }

                
            //輸入子串以#結尾
                cout<<"input the substring:";
                
            for(int i = 0;i<sizeof(subStr)/sizeof(subStr[0]);i++)
                {
                  cin
            >>subStr[i];
                  
            if(subStr[i] == '#')
                  {
                      subStr[i] 
            = '\0';
                      
            break;
                  }
                }

                
            //用于標記是否找到子串
                bool isSub = true;

                
            //找子串
                for(int i = 0;i<strlen(str);i++)
                {
                    isSub 
            = true;
                    
            for(int j = 0;j<strlen(subStr);j++)
                    {
                        
            if(subStr[j] == str[i+j]) continue;
                        
            else 
                        {
                            isSub 
            = false;
                            
            break;
                        }

                    }
                    
                    
            if(isSub)
                    {
            //如果找到子串,則將后續字符全部前移
                     for(int m = i;m<strlen(str)+1-strlen(subStr);m++)
                     {
                         str[m] 
            = str[m+strlen(subStr)];
                     }
                    }
                }

                
            //輸出刪除后的
                cout<<"the result string:"<<str<<endl;
                system(
            "pause");
                
            return 1;
            }

            posted @ 2010-10-06 20:45 馬賽克007 閱讀(1056) | 評論 (0)編輯 收藏

            2010年9月28日

            冒泡排序(C++)

            /*
            Subject:      Bubble sort
            Author:       shexinwei
            Date:         2010-09-28
            Laguage:      C++
            IDE | Tool:   GCC(DEV 5.0)
            Version:      1.0
            Modify Time:  2010-09-28
            */   

            #include <cstdlib>
            #include <iostream>
            #include <fstream>
            using namespace std;
            //排序函數
            int Bublle_sort(int data[],int n);
            //打印數組函數
            int print(int data[],int n);
            int main(int argc, char *argv[])
            {
                int data[] = { 2,1,5,3,5,2,6,2};
                int length = sizeof(data)/sizeof(data[0]);
                cout<<"初始序列:"<<endl;
                print(data,length);
                Bublle_sort(data,length);
                cout<<"最終結果:"<<endl;
                print(data,length);
                cout<<endl;
                system("pause");
                return 1;
            }
            int Bublle_sort(int data[],int n)
            {
            int tmp = 0;
            for(int i = 0;i < n;i++)
            {
                for(int j = 0;j < n-i-1;j++)
                {
                        if(data[j]<data[j+1])
                        {
                           tmp = data[j];
                           data[j] = data[j+1];
                           data[j+1] = tmp;
                        }
                        else continue;
                }
                cout<<i+1<<"次排序結果:"<<endl;
                print(data,n);
                cout<<endl;
            }
                return 1;
            }
            int print(int data[],int n)
            {
                for(int i = 0;i < n;i++)
                {
                        cout<<data[i]<<" ";
                }
                        cout<<endl;
            }

            調試結果:


            posted @ 2010-09-28 21:46 馬賽克007 閱讀(1720) | 評論 (0)編輯 收藏

            2010年9月25日

            迅雷筆試題(C++)

             1/////////////////////////////////////////////////
             2//迅雷筆試題:
             3//有N個大小不等的自然數(1--N),請將它們由小到大排序。   
             4//要求程序算法:時間復雜度為O(n),空間復雜度為O(1)。
             5
             6#define TEST_XUNLEI
             7
             8#ifdef TEST_XUNLEI
             9
            10#include <iostream>
            11using namespace std;
            12int sort(int data[],int n);
            13int main()
            14{
            15    int data[] = {8,7,9,4,6,5,3,2,1};
            16    for(int i = 0 ;i < sizeof(data)/sizeof(int);i++)
            17        cout<<data[i]<<" ";
            18    cout<<endl;
            19    sort(data,sizeof(data)/sizeof(int));
            20    system("pause");
            21    return 1;
            22}

            23int sort(int data[],int n)
            24{
            25    //保證空間復雜度為O(1)
            26    int tmp = 0;               
            27    for(int i = 0;i < n;i++)    
            28    {
            29       //移動,直到第data[i]為i+1的時,while結束循環。向后繼續判斷
            30        while(data[i] != i+1)   
            31        
            32            //每次循環保證了data[i-1]的正確。總共有n個所以時間復雜度為O(N)
            33            tmp = data[data[i]-1];
            34            data[data[i]-1= data[i];        
            35            data[i] = tmp;
            36        }

            37    }

            38    for(int i = 0;i < n;i++)
            39        cout<<data[i]<<" ";
            40    cout<<endl;
            41    return 1;
            42}

            43
            44
            45#endif
            該題的重點在于,N個1--N的數。

            posted @ 2010-09-25 22:49 馬賽克007 閱讀(5213) | 評論 (16)編輯 收藏

            2010年9月20日

            n個小于一百萬可重復數的排序

            #define RAND
            #define RANK

            #ifdef RAND
            #include 
            <iostream>
            using namespace std;
            #include 
            <time.h>
            enum{MAX=10000};
            int main()
            {
                ofstream 
            out("rand.txt");
                
            //輸出總數
                out<<MAX<<" ";
                
                srand((unsigned 
            int)time(NULL));
                
                
            for(int i = 0;i < MAX;i++)
                
            {
                    
            out<<rand()<<" ";
                }

                
            out.close();
                cout
            <<"out over"<<endl;
                
            return 1;
            }

            #endif

            #ifdef RANK
            #include 
            <iostream>
            using namespace std;
            int main()
            {
                
            int max = 0;
                ifstream 
            in("rand.txt");

                
            //獲取要排序數的個數
                in>>max;

                
            //初始化統計數組
                int *num = new int[RAND_MAX];
                
            for (int i = 0;i < max;i++)
                
            {
                    num[i] 
            = 0;
                }


                
            int tmp = -1;
                
            //讀取數據,并統計
                for (i = 0;i < max;i++)
                
            {
                    
            in>>tmp;
                    num[tmp] 
            += 1;
                }


                
            //輸出
                ofstream out("out.txt");
                
            for (i = 0;i < max;i++)
                
            {
                    
            if(num[i] != 0)
                        
            for (int j = 0;j < num[i];j++)
                        
            //如果有多個,則輸出多個
                            out<<i<<" ";
                        }

                }

                
            out.close();
                
            in.close();
                
            return;
            }

            #endif

            posted @ 2010-09-20 17:33 馬賽克007 閱讀(1658) | 評論 (2)編輯 收藏

            2010年9月13日

            判斷整型數中每一位的值(C++)

            怎么獲取整形中某一位的值是最常見的面試題。
             1/*
             2Subject:        the value of the each bit on int
             3Author:         shexinwei
             4School:         xidian university
             5Date:           2010-09-13
             6Laguage:        C++
             7IDE:            visual studio 6.o
             8Version:        1.0
             9Modify Time:    2010-09-13
            10*/

            11#include <iostream>
            12using namespace std;
            13int main()
            14{
            15    int i = 0;
            16    cout<<"please input the number:";
            17    cin>>i;
            18    char *result = new char[sizeof(int)*8];
            19    int j = 1;
            20    for (int k = 0;k<sizeof(int)*8;(j=j<<1),k++)
            21    {
            22        if ( (i&j) == 0 )
            23        {
            24            result[k] = '0';
            25        }

            26        else result[k] = '1';
            27    }

            28    for (int m = sizeof(int)*8-1;m >=0 ; m--)
            29{
            30        cout<<result[m];
            31    }

            32    cout<<endl;
            33    delete []result;
            34    return 1;
            35}

            posted @ 2010-09-13 20:48 馬賽克007 閱讀(2678) | 評論 (4)編輯 收藏

            2010年9月12日

            快速排序(C++)

              1 //版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
              2 //http://shexinwei.blogbus.com/logs/74827291.html
              3 
              4 
              5 /*
              6 
              7 Subject:      Quick sort
              8 
              9 Author:       shexinwei
             10 
             11 School:       xidian university
             12 
             13 Date:         2010-09-12
             14 
             15 Laguage:      C++
             16 
             17 IDE | Tool:   GCC
             18 
             19 Version:      1.0
             20 
             21 Modify Time:  2010-09-12
             22 
             23 */    
             24 
             25 #include <iostream>
             26 
             27 using namespace std;
             28 
             29 int sort(int begin,int end,int data[],int n);
             30 
             31 int recurs(int begin,int end,int data[],int n);
             32 
             33 int print(int data[],int n);
             34 
             35 int main()
             36 
             37 {
             38 
             39     int data[] = {20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
             40 
             41     //打印初始序列
             42 
             43     print(data,20);
             44 
             45     //遞歸排序
             46 
             47     recurs(0,19,data,20);
             48 
             49     //打印最終序列    
             50 
             51     print(data,20);
             52 
             53     cout<<endl;
             54 
             55         return 1;
             56 
             57 }
             58 
             59  
             60 
             61 //打印序列
             62 
             63 int print(int data[],int n)
             64 
             65 {
             66 
             67     for(int i = 0;i<n;i++)
             68 
             69         cout<<data[i]<<" ";
             70 
             71     cout<<endl;
             72 
             73     return 1;
             74 
             75 }
             76 
             77  
             78 
             79  
             80 
             81 int sort(int begin,int end,int data[],int n)
             82 
             83 {
             84 
             85     //選擇最后一位做初始的中樞
             86 
             87     int pos = end;
             88 
             89     int key  = data[end];
             90 
             91     //索引初始化
             92 
             93     int front = begin;
             94 
             95     int last = end;
             96 
             97     for(;front != last;front++)
             98 
             99     { //向后查找
            100 
            101  
            102 
            103         if((data[front] < key) || (data[front] == key)) continue;
            104 
            105         else
            106 
            107         { //遇到比中樞值大的元素,交換位置,修改pos的值,并開始從后向前找
            108 
            109             data[pos] = data[front];
            110 
            111             pos = front;
            112 
            113             //以下一句可注釋,只需要保存中樞的位置,可以不修改值,因中樞值在key中保存,最后找到最終位置后再賦值即可
            114 
            115             data[pos] = key;     
            116 
            117             //輸出改變一次后的序列
            118 
            119             print(data,n);
            120 
            121             for(;front != last;last--)
            122 
            123             {//從后向前查找
            124 
            125                 if((data[last] > key)||(data[last] == key)) continue;
            126 
            127                 else
            128 
            129                 { //遇到比中樞值小的元素,交換位置,修改pos值,并重新開始從前向后查找
            130 
            131                    data[pos] = data[last];
            132 
            133                    pos = last;
            134 
            135                  //以下一句可注釋,只需要保存中樞的位置,可以不修改值,因中樞值在key中保存,最后找到最終位置后再賦值即可
            136 
            137                        data[pos] = key;
            138 
            139                  //打印修改以后的序列
            140 
            141                    print(data,n); 
            142 
            143                  //重新開始從前向后查找
            144 
            145                    break;
            146 
            147                 }
            148 
            149             }
            150 
            151             
            152 
            153         }
            154 
            155         //如果從后向前已經使得front==last,那么一趟分割完畢
            156 
            157         if(front == last) break;
            158 
            159     }
            160 
            161     data[pos] = key;
            162 
            163     return pos;
            164 
            165 }
            166 
            167 int recurs(int begin,int end,int data[],int n)
            168 
            169 {
            170 
            171     //遞歸出口
            172 
            173     if((begin == end) || (begin > end)) return 1;
            174 
            175     else
            176 
            177     {
            178 
            179     //做分割
            180 
            181     int index = sort(begin,end,data,n);
            182 
            183     //前一部分遞歸
            184 
            185     recurs(begin,index-1,data,n);
            186 
            187     //后一部分遞歸
            188 
            189     recurs(index+1,end,data,n);
            190 
            191     }
            192 
            193 }

            posted @ 2010-09-12 17:02 馬賽克007 閱讀(4516) | 評論 (1)編輯 收藏

            2010年9月10日

            the difference of some Input function

            1 /* 2 Subject: the difference of gets(),getch(),getchar() and getline() 3 Author: shexinwei 4 School: xidian university 5 Date: 2010-09-09 6 Laguage: C++ 7 IDE: visual studio 6.o 8 Version: 1.0 9 Modify Time: 2010-09-09 10 */ 11 #include <iostream> 12 using namespace std; 13 #include <conio.h> 14 #define MAX_LEN 20 15 int main() 16 { 17 18 //gets() : Get a line from the stdin stream. 19 //Get a line from the stdin stream. 20 21 cout<<"the function gets():"<<endl; 22 char buffer[MAX_LEN]; 23 gets(buffer); 24 cout<<buffer<<endl; 25 26 // getchar(): 27 // marco: #define getchar() getc(stdin) File: STDIO.H Get a character from a file; 28 // function: _CRTIMP int __cdecl getchar(void); File: STDIO.H Get a character from stdin; 29 char tmp = 0; 30 cout<<endl<<endl<<"the function getchar():"<<endl; 31 cout<< (char)getchar(tmp) <<endl; 32 33 //getline(): 34 //basic_istream<Elem, Tr>& getline(char_type *_Str, streamsize _Count); 35 //Gets a line from the input stream. 36 cout<<endl<<endl<<"the function getline():"<<endl; 37 cin.getline(buffer,MAX_LEN); 38 cout<<buffer<<endl; 39 40 //getch(): 41 //This POSIX function is deprecated beginning in Visual C++ 2005. Use the ISO C++ conformant _getch instead 42 //Gets a character from the console without echo. 43 //int _getch( void ); 44 //Returns the character read. There is no error return. 45 //Headers: <conio.h> 46 cout<<endl<<endl<<"the function getch():"<<endl; 47 tmp = getch(); //without echo 48 // cout<<tmp<<endl; //print the character 49 50 51 system("pause"); 52 return 0; 53 54 }

            posted @ 2010-09-10 08:44 馬賽克007 閱讀(1490) | 評論 (0)編輯 收藏

            版權聲明文檔

            作為一個專業的程序員,我們需要在每一個源文件中做一些版權聲明性的注釋。現在根據我所見到的,和自己的理解,定義一份屬于我自己的版權聲明文檔格式。不足之處日后繼續添加補充。

            示例

            1 /* 2 Subject: the difference of gets(),getch(),getchar() and getline() 3 Author: shexinwei 4 School: xidian university 5 Date: 2010-09-09 6 Laguage: C++ 7 IDE: visual studio 6.o 8 Version: 1.0 9 Modify Time: 2010-09-09 10 */


            posted @ 2010-09-10 08:41 馬賽克007 閱讀(387) | 評論 (0)編輯 收藏

            僅列出標題  
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導航

            統計

            公告

            QQ:306334649 本博客所發代碼皆為作者原創,大家可以隨便使用。

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章分類

            我的博客

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            精品久久久久久国产三级| 国产精品久久婷婷六月丁香| 天天影视色香欲综合久久| 久久国产精品久久| 欧洲人妻丰满av无码久久不卡| 狠狠色丁香久久婷婷综合蜜芽五月| 久久有码中文字幕| 99精品国产在热久久无毒不卡| 久久久久亚洲AV综合波多野结衣| 国产91久久精品一区二区| 久久久久女教师免费一区| 久久午夜无码鲁丝片午夜精品| 国产精品伦理久久久久久 | 99精品国产在热久久无毒不卡 | 久久99精品久久久久久hb无码| 久久久免费观成人影院| 日本高清无卡码一区二区久久| 久久久久av无码免费网| 久久久受www免费人成| 亚洲国产天堂久久综合网站| 日韩精品久久久肉伦网站 | 国产韩国精品一区二区三区久久| 青青热久久国产久精品 | 精品综合久久久久久98| 色婷婷狠狠久久综合五月| 伊人情人综合成人久久网小说| 久久香综合精品久久伊人| 亚洲国产欧美国产综合久久| 99国产精品久久久久久久成人热| 久久精品九九亚洲精品天堂| 久久国产精品无码网站| 国内精品久久久久影院老司 | 久久99精品久久久久久hb无码| 国产一级做a爰片久久毛片| 久久久久99精品成人片三人毛片| 武侠古典久久婷婷狼人伊人| 色婷婷综合久久久久中文一区二区 | 久久综合综合久久狠狠狠97色88| 久久久久久久久久免免费精品 | 99久久精品午夜一区二区| 天天综合久久久网|