1. 程式人生 > >基於visual Studio2013解決面試題之1405歸併排序

基於visual Studio2013解決面試題之1405歸併排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                


題目



解決程式碼及點評

[cpp] view plain copy print
?
  1.   
[cpp] view plain copy print ?
  1.   
[cpp] view plain copy print ?
  1. <code class="language-cpp">/* 
  2.     歸併排序
     
  3. */  
  4.   
  5. #include <iostream>  
  6.   
  7. using namespace std;  
  8.   
  9. const int N=10;  
  10. int anthor[N];  
  11. void MergeSort(int *array,int begin,
    int end)  
  12. {  
  13.     if(end-begin>1)  
  14.     {  
  15.         //  
  16.         MergeSort(array,begin,(begin+end)/2);  
  17.         MergeSort(array,(begin+end)/2+1,end);  
  18.   
  19.         int i=begin;  
  20.         int j=(begin+end)/2+1;  
  21.         int k=begin;  
  22.   
  23.         while (i<=(begin+end)/2&&j<=end)//合併時,把一個串全部併入另一個串放在一個新串,剩下的直接放在尾部  
  24.         {  
  25.             if(array[i]>array[j])        //小的值進入,並將索引後移  
  26.                 anthor[k++]=array[j++];  
  27.             if(array[i]<array[j])  
  28.                 anthor[k++]=array[i++];  
  29.   
  30.         }  
  31.         while (i<=(begin+end)/2)  
  32.         {  
  33.             anthor[k++]=array[i++];  
  34.         }  
  35.         while(j<=end)  
  36.         {  
  37.             anthor[k++]=array[j++];  
  38.         }  
  39.   
  40.         for(k=begin;k<=end;k++)    //排序好重新拷貝回陣列  
  41.             array[k]=anthor[k];  
  42.   
  43.     }  
  44.     else      //相鄰則直接交換  
  45.     {  
  46.         if(array[end]<array[begin])  
  47.         {  
  48.             int temp=array[end];  
  49.             array[end]=array[begin];  
  50.             array[begin]=temp;  
  51.         }  
  52.     }  
  53. }  
  54.   
  55.   
  56. int main()  
  57. {  
  58.   
  59.   
  60.     int array[N];  
  61.     for(int i=0;i<10;i++)  
  62.     {  
  63.         array[i]=rand()%100;  
  64.         cout<<array[i]<<" ";  
  65.     }  
  66.   
  67.     MergeSort(array,0,N-1);  
  68.     cout<<endl;  
  69.     for(int i=0;i<10;i++)  
  70.     {  
  71.   
  72.         cout<<array[i]<<" ";  
  73.     }  
  74.     system("pause");  
  75.     return 0;  
  76. }  
  77.   
  78. </code>  
/* 歸併排序*/#include <iostream>using namespace std;const int N=10;int anthor[N];void MergeSort(int *array,int begin,int end)if(end-begin>1) {  //  MergeSort(array,begin,(begin+end)/2);  MergeSort(array,(begin+end)/2+1,end);  int i=begin;  int j=(begin+end)/2+1;  int k=begin;  while (i<=(begin+end)/2&&j<=end)//合併時,把一個串全部併入另一個串放在一個新串,剩下的直接放在尾部  {   if(array[i]>array[j])        //小的值進入,並將索引後移    anthor[k++]=array[j++];   if(array[i]<array[j])    anthor[k++]=array[i++];  }  while (i<=(begin+end)/2)  {   anthor[k++]=array[i++];  }  while(j<=end)  {   anthor[k++]=array[j++];  }  for(k=begin;k<=end;k++)    //排序好重新拷貝回陣列   array[k]=anthor[k]; } else      //相鄰則直接交換 {  if(array[end]<array[begin])  {   int temp=array[end];   array[end]=array[begin];   array[begin]=temp;  } }}int main()int array[N]; for(int i=0;i<10;i++) {  array[i]=rand()%100;  cout<<array[i]<<" "; } MergeSort(array,0,N-1); cout<<endlfor(int i=0;i<10;i++) {  cout<<array[i]<<" "; } system("pause"); return 0;}

程式碼下載及其執行

程式碼下載地址:http://download.csdn.net/detail/yincheng01/6704519

解壓密碼:c.itcast.cn


下載程式碼並解壓後,用VC2013開啟interview.sln,並設定對應的啟動專案後,點選執行即可,具體步驟如下:

1)設定啟動專案:右鍵點選解決方案,在彈出選單中選擇“設定啟動專案”


2)在下拉框中選擇相應專案,專案名和部落格編號一致

3)點選“本地Windows偵錯程式”執行


程式執行結果




               

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述