青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Fly me to the moon

the beauty of C++

基本算法練習(一)

筆試面試中常常會要求應聘者用自己最擅長的語言實現一些基本算法,這種考基本功的問題還是需要認真對待的。很多基本算法雖然表面上思想很簡單,但在實現為程序的時候卻總是會有很多非常tricky的問題讓你陰溝里翻船,要么死循環了,要么數組越界了,要么整數溢出了。所以平時多練練手,在筆試面試的時候可以短時間內正確地實現這些算法,就可以給面試官一個基本功扎實的好印象,還能增加自信心,絕對能給筆試面試加不少分。
下面是剛才花了點時間實現的一些筆試面試中經常會問到的算法,基本都是搜索啊,排序啊,也都非常簡單,但是包括寫測試代碼,查錯,修改在內差不多花了我1個小時的時間,中間好幾個算法在第一遍寫完的時候都出現了各種各樣的問題,連選擇排序這么簡單的我都寫錯了兩次,可見基本功還是不夠扎實啊,以后得多練習練習。
下面的實現包括:
排序:冒泡,選擇,插入,快排(3個版本)
搜索:二叉搜索(2個版本)
  1#include <iostream>
  2#include <fstream>
  3#include <sstream>
  4#include <string>
  5#include <cmath>
  6#include <iomanip>
  7#include <vector>
  8#include <deque>
  9#include <list>
 10#include <queue>
 11#include <stack>
 12#include <map>
 13#include <algorithm>
 14#include <limits>
 15#include <utility>
 16#include <ctime>
 17#include <bitset>
 18using namespace std;
 19
 20//冒泡
 21void bubble_sort(int a[], int n)
 22{
 23    for(int i=n-1;i>=0;--i)
 24        for(int j=0;j<i;j++)
 25            if(a[j]>a[j+1])
 26                swap(a[j], a[j+1]);
 27}

 28
 29//插入排序
 30void insert_sort(int a[], int n)
 31{
 32    for(int i=1;i<n;++i)
 33    {
 34        int j,x = a[i];
 35        for(j=i-1;j>=0;--j)
 36            if(a[j]>x)
 37                a[j+1]=a[j];
 38            else
 39                break;
 40
 41        a[j+1= x;
 42    }

 43}

 44
 45//選擇排序
 46void select_sort(int a[], int n)
 47{
 48    for(int i=0;i<n;++i)
 49    {
 50        int min = i;
 51        for(int j=i+1;j<n;++j)
 52            if(a[j]<a[min])
 53                min = j;
 54
 55        swap(a[i], a[min]);
 56    }

 57}

 58
 59//快排(單向)
 60void quick_sort_1(int a[], int l, int r)
 61{
 62    if(l>=r)
 63        return;
 64    int m=l;
 65    for(int i=l+1;i<=r;i++)
 66        if(a[i]<a[l])
 67            swap(a[++m], a[i]);
 68    swap(a[l], a[m]);
 69    quick_sort_1(a, l, m-1);
 70    quick_sort_1(a, m+1, r);
 71}

 72
 73//快排(雙向)
 74void quick_sort_2(int a[], int l, int r)
 75{
 76    if(l>=r)
 77        return;
 78    int i=l,j=r+1;
 79    while(1)
 80    {
 81        do i++while(i<=&& a[i]<a[l]);
 82        do j--while(a[j]>a[l]);
 83        if(i>j) break;
 84        swap(a[i], a[j]);
 85    }

 86    swap(a[l], a[j]);
 87    quick_sort_2(a, l, j-1);
 88    quick_sort_2(a, j+1, r);
 89}

 90
 91//在[l,r]中取隨機數
 92int rand_int(int l, int r)
 93{
 94    srand((unsigned)time(NULL));
 95    const float scale = rand()/float(RAND_MAX);//scale in [0,1)
 96    int rnd = static_cast<int>(scale*(r-l) + 0.5);//rnd in [0, r-l]
 97    return l+rnd;//[l,r]
 98}

 99
100//隨機pivot,快排(雙向)
101void quick_sort_3(int a[], int l, int r)
102{
103    if(l>=r)
104        return;
105    int i=l,j=r+1;
106    swap(a[l], a[rand_int(l,r)]);//randomized
107    while(1)
108    {
109        do i++while(i<=&& a[i]<a[l]);
110        do j--while(a[j]>a[l]);
111        if(i>j) break;
112        swap(a[i], a[j]);
113    }

114    swap(a[l], a[j]);
115    quick_sort_2(a, l, j-1);
116    quick_sort_2(a, j+1, r);
117}

118
119//二叉搜索
120int binary_search_1(int a[], int n, int t)
121{
122    int l=0,r=n-1,m;
123    while(l<=r)
124    {
125        m = (l+r)/2;
126        if(a[m]==t)
127            return m;
128        else if(a[m]<t)
129            l = m+1;
130        else
131            r = m-1;
132    }

133
134    return -1;
135}

136
137//返回第一次出現的二叉搜索
138int binary_search_2(int a[], int n, int t)
139{
140    int l=-1,r=n,m,res;
141    while(l+1!=r)
142    {
143        m = (l+r)/2;
144        if(a[m]<t)
145            l = m;
146        else
147            r = m;
148    }

149    res = r;
150    if(a[res]!=|| res>=n)
151        res = -1;
152
153    return res;
154}

155
156void assign_array(int a1[], int a2[], int n)
157{
158    for(int i=0;i<n;i++)
159        a1[i] = a2[i];
160}

161
162void print_array(int a[], int n)
163{
164    for(int i=0;i<n;i++)
165        cout<<a[i]<<" ";
166    cout<<endl;
167}

168
169int main()
170{
171    int origin_array[] = {3,2,6,9,11,2,3,8,4,5,3,8,19,1,11,7};
172    int len = sizeof(origin_array)/sizeof(origin_array[0]);
173    int *test_array = new int[len];
174
175    //測試冒泡
176    assign_array(test_array, origin_array, len);
177    print_array(test_array, len);
178    cout<<"bubble sort"<<endl;
179    bubble_sort(test_array, len);
180    print_array(test_array, len);
181    cout<<endl;
182
183    //測試插入排序
184    assign_array(test_array, origin_array, len);
185    print_array(test_array, len);
186    cout<<"insert sort"<<endl;
187    insert_sort(test_array, len);
188    print_array(test_array, len);
189    cout<<endl;
190
191    
192    //測試選擇排序
193    assign_array(test_array, origin_array, len);
194    print_array(test_array, len);
195    cout<<"select sort"<<endl;
196    select_sort(test_array, len);
197    print_array(test_array, len);
198    cout<<endl;
199
200    //測試快排(單向)
201    assign_array(test_array, origin_array, len);
202    print_array(test_array, len);
203    cout<<"quick sort 1"<<endl;
204    quick_sort_1(test_array, 0, len-1);
205    print_array(test_array, len);
206    cout<<endl;
207    
208    //測試快排(雙向)
209    assign_array(test_array, origin_array, len);
210    print_array(test_array, len);
211    cout<<"quick sort 2"<<endl;
212    quick_sort_2(test_array, 0, len-1);
213    print_array(test_array, len);
214    cout<<endl;
215
216    //測試隨機快排(雙向)
217    assign_array(test_array, origin_array, len);
218    print_array(test_array, len);
219    cout<<"quick sort 3"<<endl;
220    quick_sort_3(test_array, 0, len-1);
221    print_array(test_array, len);
222    cout<<endl;
223
224    int target, loc;
225    cout<<"請輸入目標值(crtl-z退出): ";
226    while(cin>>target)
227    {
228        //測試二叉搜索
229        cout<<"binary search 1"<<endl;
230        if((loc=binary_search_1(test_array, len, target))>=0)
231            cout<<"find "<<target<<" at location: "<<loc<<endl;
232        else
233            cout<<target<<" is not in the array"<<endl;
234
235        cout<<"請輸入目標值(crtl-z退出): ";
236    }

237
238    //測試返回第一次出現的二叉搜索
239    cin.clear();
240    cout<<"請輸入目標值(crtl-z退出): ";
241    while(cin>>target)
242    {
243        cout<<"binary search 2"<<endl;
244        if((loc=binary_search_2(test_array, len, target))>=0)
245            cout<<"find first "<<target<<" at location: "<<loc<<endl;
246        else
247            cout<<target<<" is not in the array"<<endl;
248
249        cout<<"請輸入目標值(crtl-z退出): ";
250    }

251        
252    return 0;
253}

下次有時間再練練歸并,堆排序,基數排序,BFS,DFS啥的

posted on 2009-09-22 14:02 翼帆 閱讀(1069) 評論(0)  編輯 收藏 引用 所屬分類: 算法筆試/面試

導航

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統計

常用鏈接

留言簿

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品久久久久高潮| 一区二区亚洲精品| 久久综合色8888| 国产精品久久久久一区二区| 男女视频一区二区| 国产视频欧美| 亚洲私人黄色宅男| 亚洲免费成人av电影| 久久天天狠狠| 久久亚洲美女| 国产亚洲制服色| 亚洲在线日韩| 亚洲欧美另类中文字幕| 欧美日韩第一页| 亚洲欧洲精品一区| 亚洲福利免费| 六月婷婷一区| 欧美91福利在线观看| 极品尤物av久久免费看| 午夜视频在线观看一区| 欧美在线二区| 国产日韩欧美另类| 午夜一区在线| 久久久xxx| 黄色成人免费网站| 久久精品免费| 你懂的国产精品| 亚洲第一久久影院| 久久综合色播五月| 亚洲国产成人久久| 99精品国产高清一区二区| 欧美精品手机在线| 99视频精品| 亚洲欧美日韩成人| 国产精品揄拍一区二区| 亚洲欧美日本国产专区一区| 欧美一区二区三区在线免费观看| 国产伦精品一区二区三区高清版| 性18欧美另类| 六月丁香综合| 亚洲精品一级| 国产精品yjizz| 欧美一级理论片| 欧美成人69| 亚洲老板91色精品久久| 国产精品mm| 香蕉国产精品偷在线观看不卡 | 国产三级精品三级| 久久久久久久网| 亚洲欧洲在线视频| 亚洲欧美日韩在线| 狠狠色狠色综合曰曰| 男同欧美伦乱| 亚洲视频视频在线| 久久一区精品| 99国产精品久久久| 国产精品一区二区男女羞羞无遮挡| 亚洲精品欧美极品| 欧美一级专区| 亚洲区一区二| 欧美午夜宅男影院| 久久国产精品高清| 99国内精品久久| 久久久久久久久久看片| 亚洲免费黄色| 国产一区二区三区精品久久久| 免播放器亚洲一区| 99精品欧美一区二区三区| 久久精品一区二区三区不卡| 亚洲最新视频在线播放| 国产一区二区三区在线观看视频| 欧美国产成人精品| 翔田千里一区二区| 一本一本大道香蕉久在线精品| 久久久久久久久久久久久久一区 | 亚洲人体大胆视频| 国产伦精品一区二区三| 欧美日本乱大交xxxxx| 久久激情视频久久| 亚洲午夜在线观看| 亚洲高清不卡在线| 久久影院午夜论| 亚洲制服少妇| 亚洲精品一区二区三区在线观看 | 久久福利毛片| 夜夜爽夜夜爽精品视频| 亚洲国产国产亚洲一二三| 国产欧美日韩一区| 欧美吻胸吃奶大尺度电影| 免费成人黄色| 久久噜噜噜精品国产亚洲综合| 亚洲一区二区三区国产| 99精品国产高清一区二区| 欧美国产日产韩国视频| 久久综合网色—综合色88| 久久精品视频亚洲| 午夜精品影院在线观看| 亚洲综合社区| 亚洲深夜福利视频| 99精品视频一区二区三区| 亚洲福利小视频| 一区二区三区在线看| 国产在线视频欧美一区二区三区| 国产嫩草影院久久久久| 国产美女精品在线| 欧美日韩综合另类| 欧美视频一区二区三区…| 欧美日韩理论| 欧美性猛片xxxx免费看久爱| 欧美日韩中文另类| 国产精品白丝黑袜喷水久久久 | 欧美国产国产综合| 欧美第一黄色网| 欧美国产日韩视频| 欧美日本一区二区高清播放视频| 欧美日本一区| 欧美性大战久久久久久久蜜臀| 欧美性大战久久久久久久| 欧美三级网页| 国产精品一区在线播放| 国产亚洲精品久久飘花| 韩国三级在线一区| 亚洲国产精品成人精品| 日韩视频专区| 亚洲欧美卡通另类91av| 久久精品123| 欧美成人精品一区二区三区| 欧美国产在线视频| 99riav国产精品| 亚洲一区三区电影在线观看| 香蕉久久夜色| 女人香蕉久久**毛片精品| 欧美人与禽猛交乱配| 国产精品视频久久久| 国产自产女人91一区在线观看| 亚洲电影免费观看高清完整版在线观看 | 亚洲第一色在线| 亚洲片在线观看| 午夜亚洲性色视频| 免费观看久久久4p| 亚洲欧洲在线一区| 午夜精品久久久久久久| 美国十次成人| 国产精品久久久久永久免费观看| 国模私拍视频一区| 日韩视频三区| 欧美一区二视频在线免费观看| 欧美a级在线| 一区二区三区国产精华| 久久激情视频免费观看| 欧美日韩国产在线播放网站| 国产精品永久入口久久久| 亚洲国产欧美另类丝袜| 午夜久久久久久| 亚洲国产精品999| 在线视频欧美精品| 美女黄网久久| 国产美女在线精品免费观看| 亚洲欧美视频| 欧美h视频在线| 国产一区二区三区网站| 亚洲视频久久| 欧美a级片网| 性久久久久久久| 欧美日韩国产精品专区| 亚洲福利视频专区| 欧美自拍丝袜亚洲| 日韩视频在线免费| 免费欧美在线| 狠狠干成人综合网| 午夜精品久久久久久99热软件| 亚洲国产视频一区二区| 久久精品日产第一区二区| 国产精品视频男人的天堂| 一区二区欧美激情| 亚洲第一精品夜夜躁人人爽| 欧美一区二区三区免费视频| 国产精品色网| 亚洲视频碰碰| 日韩视频在线永久播放| 欧美国产一区二区三区激情无套| 好看的日韩av电影| 久久岛国电影| 亚洲一级二级在线| 欧美视频一区二| 亚洲一区免费在线观看| 亚洲乱码国产乱码精品精| 欧美国产精品| 亚洲欧洲在线免费| 亚洲国产mv| 蜜臀a∨国产成人精品| 在线日本欧美| 欧美黑人国产人伦爽爽爽| 久久综合狠狠综合久久综合88| 国产一区二区三区黄| 久久久久久久激情视频| 久久久99免费视频| 在线精品国精品国产尤物884a| 久久免费视频观看| 久久久一本精品99久久精品66|