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

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>
            欧美激情精品| 国产一区二区视频在线观看| 日韩视频欧美视频| 国产精品久99| 亚洲高清视频在线观看| 黑人一区二区| 亚洲国产综合91精品麻豆| 韩日欧美一区| 亚洲国产二区| av成人老司机| 欧美一区二区三区久久精品| 久久精品免视看| 欧美风情在线观看| 一本一本大道香蕉久在线精品| 一区二区三区视频在线| 亚洲欧美日韩国产一区| 久久久久免费观看| 欧美极品一区二区三区| 国产麻豆精品久久一二三| 一色屋精品视频在线看| 欧美一区二区黄色| 老司机精品导航| 亚洲韩国青草视频| 在线不卡中文字幕播放| 国产日韩欧美在线看| 91久久精品国产91久久| 亚洲欧美经典视频| 麻豆国产va免费精品高清在线| 亚洲清纯自拍| 午夜国产精品视频| 欧美成人官网二区| 国产一区二区你懂的| 亚洲性视频网址| 欧美黄色精品| 久久激情婷婷| 国产欧美日韩综合一区在线观看 | 狠狠色2019综合网| 在线亚洲免费视频| 可以看av的网站久久看| 亚洲夜晚福利在线观看| 欧美精品激情| 亚洲人在线视频| 久久综合给合| 午夜久久tv| 国产精品夜夜夜| 欧美成人精品一区二区| 在线视频日韩精品| 蜜桃久久精品乱码一区二区| 亚洲一区二区三区四区在线观看 | 国产麻豆精品在线观看| 日韩视频二区| 欧美成人日本| 久久先锋资源| 亚洲电影视频在线| 欧美一区二区三区视频在线观看 | 亚洲一区中文字幕在线观看| 欧美日本一道本在线视频| 亚洲第一搞黄网站| 久久裸体艺术| 欧美一区观看| 国产真实乱偷精品视频免| 亚洲欧美综合网| 亚洲天堂久久| 国产精品自在线| 亚洲日本中文字幕免费在线不卡| 欧美成ee人免费视频| 蜜臀av在线播放一区二区三区 | 国产欧美1区2区3区| 羞羞视频在线观看欧美| 一本色道久久88精品综合| 欧美三级电影一区| 性欧美超级视频| 欧美在线免费视频| 好看的日韩av电影| 欧美激情视频一区二区三区在线播放 | 亚洲第一成人在线| 欧美精品九九99久久| 亚洲视频日本| 亚洲欧美日韩国产一区| 韩国成人理伦片免费播放| 久久久久国内| 免费av成人在线| 亚洲一区二区在线看| 午夜日韩电影| 亚洲黄色在线看| 亚洲一区久久久| 在线欧美一区| 亚洲香蕉在线观看| 亚洲国产影院| 欧美一区日本一区韩国一区| 91久久精品一区二区三区| 一区二区三区日韩欧美| 一区二区三区在线观看欧美| 亚洲欧洲一区二区三区| 国产午夜精品理论片a级探花 | 亚洲国产精品精华液2区45| 国产精品捆绑调教| 欧美成人激情在线| 日韩亚洲欧美中文三级| 欧美一区二区免费视频| 91久久在线| 亚洲欧美制服另类日韩| 中日韩高清电影网| 久久久久高清| 亚洲一级黄色片| 久久综合九色综合欧美就去吻| 亚洲在线观看| 欧美高清在线播放| 麻豆精品视频在线观看视频| 欧美视频中文字幕| 欧美激情五月| 国产精品影音先锋| 99re热这里只有精品视频| 国产婷婷成人久久av免费高清 | 欧美不卡三区| 国产午夜精品福利| 亚洲视频一二区| 亚洲精品乱码久久久久| 久久成人免费网| 久久精品99久久香蕉国产色戒 | 国内精品久久久久国产盗摄免费观看完整版| 亚洲高清在线视频| 极品裸体白嫩激情啪啪国产精品| 亚洲一区二区三区乱码aⅴ| 一区二区三区国产在线观看| 免费在线播放第一区高清av| 久久亚洲免费| 国产自产在线视频一区| 午夜老司机精品| 欧美一区二区三区视频| 国产精品美女一区二区在线观看| 亚洲美女啪啪| 亚洲图片欧美日产| 欧美日韩一区在线观看视频| 日韩午夜电影在线观看| 亚洲一区二区伦理| 欧美日韩中文在线观看| 亚洲免费高清视频| 亚洲亚洲精品三区日韩精品在线视频| 麻豆国产精品777777在线| 欧美大片在线看| 亚洲欧洲一区二区在线观看| 免费黄网站欧美| 亚洲国产另类 国产精品国产免费| 亚洲日本免费| 欧美午夜电影网| 午夜一区二区三视频在线观看| 久久久精品午夜少妇| 在线成人h网| 欧美伦理视频网站| 亚洲视频一二区| 久久久精品免费视频| 亚洲人成免费| 欧美日韩亚洲视频| 亚洲在线成人精品| 久久亚洲一区| 亚洲精品色婷婷福利天堂| 欧美日韩国产黄| 亚洲欧美综合v| 美女精品国产| 99视频精品| 欧美精品1区2区| 国产一区二区三区av电影| 欧美一区日本一区韩国一区| 欧美激情在线| 亚洲女同精品视频| 国产综合久久| 欧美另类视频| 亚洲制服欧美中文字幕中文字幕| 久久久av网站| 亚洲私人黄色宅男| 国产一区二区看久久| 欧美高清一区| 欧美制服丝袜| 日韩亚洲综合在线| 久久久一二三| 亚洲一区二区三区视频| 在线观看久久av| 欧美三级电影一区| 麻豆成人综合网| 欧美一区二区三区久久精品| 亚洲电影天堂av| 久久激情五月激情| 亚洲视频在线播放| 在线观看国产日韩| 国产精品久久国产三级国电话系列 | 欧美亚洲在线观看| 亚洲欧洲视频在线| 韩国在线一区| 国产欧美日本一区视频| 欧美大片网址| 久久久综合网站| 午夜日韩在线| 亚洲日韩中文字幕在线播放| 久久精品国产99国产精品| 亚洲欧美视频在线观看| 99re66热这里只有精品4| 在线看片日韩| 国内精品国产成人| 国产女主播在线一区二区|