1. 程式人生 > >基於visual Studio2013解決面試題之1409基數排序

基於visual Studio2013解決面試題之1409基數排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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.   
  6. #include <stdio.h>  
  7. #include <stdlib.h>  
  8. #include <malloc.h>  
  9. #include <time.h>  
  10.   
  11. void
     PrintArr(int *pnArr, int nLen)  
  12. {  
  13.     for (int i = 0; i < nLen; i++)  
  14.     {  
  15.         printf("%d ", pnArr[i]);  
  16.     }  
  17.     printf("\n");  
  18. }  
  19.   
  20. void CountSort(int *pnArr, int nArrR[], int nLen,int k)  
  21. {  
  22.     int *pnArrTmp = (int *)malloc(sizeof(int) * k);  
  23.   
  24.     for (int i = 0; i < k; i++)  
  25.     {  
  26.         pnArrTmp[i] = 0;      
  27.     }  
  28.   
  29.     for (int i = 0; i < nLen; i++)  
  30.     {  
  31.         pnArrTmp[pnArr[i]] = pnArrTmp[pnArr[i]] + 1;  
  32.     }  
  33.   
  34.     PrintArr(pnArrTmp, k);  
  35.   
  36.     for (int i = 1; i < k; i++)  
  37.     {  
  38.         pnArrTmp[i] = pnArrTmp[i] + pnArrTmp[i-1];  
  39.     }  
  40.   
  41.     PrintArr(pnArrTmp, k);  
  42.   
  43.     //還是沒怎麼明白這個for迴圈  
  44.     for (int i = nLen - 1; i >= 0; i--)  
  45.     {  
  46.         nArrR[pnArrTmp[pnArr[i]] - 1] = pnArr[i];  
  47.         pnArrTmp[pnArr[i]] = pnArrTmp[pnArr[i]] - 1;  
  48.     }  
  49. }  
  50.   
  51. int main()  
  52. {  
  53.     int nArr[11] = {0,2,1,3,2,6,9,7,4,8,6};   
  54.     int nArrR[11]; //存放排序後的結果  
  55.     PrintArr(nArr, 11);  
  56.     CountSort(nArr, nArrR, 11, 10);  
  57.   
  58.     PrintArr(nArrR, 11);  
  59.     system("pause");  
  60.     return 0;  
  61. }  
  62. </code>  
/*  基數排序 */#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <time.h>void PrintArr(int *pnArr, int nLen)for (int i = 0; i < nLen; i++) {  printf("%d ", pnArr[i]); } printf("\n");}void CountSort(int *pnArr, int nArrR[], int nLen,int k)int *pnArrTmp = (int *)malloc(sizeof(int) * k); for (int i = 0; i < k; i++) {  pnArrTmp[i] = 0;     } for (int i = 0; i < nLen; i++) {  pnArrTmp[pnArr[i]] = pnArrTmp[pnArr[i]] + 1; } PrintArr(pnArrTmp, k); for (int i = 1; i < k; i++) {  pnArrTmp[i] = pnArrTmp[i] + pnArrTmp[i-1]; } PrintArr(pnArrTmp, k); //還是沒怎麼明白這個for迴圈 for (int i = nLen - 1; i >= 0; i--) {  nArrR[pnArrTmp[pnArr[i]] - 1] = pnArr[i];  pnArrTmp[pnArr[i]] = pnArrTmp[pnArr[i]] - 1; }}int main()int nArr[11] = {0,2,1,3,2,6,9,7,4,8,6};  int nArrR[11]; //存放排序後的結果 PrintArr(nArr, 11); CountSort(nArr, nArrR, 11, 10); PrintArr(nArrR, 11); 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

這裡寫圖片描述