基于visual Studio2013解决面试题之1409基数排序

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

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               



题目



解决代码及点评

  1.   
  1.   
  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

这里写图片描述

猜你喜欢

转载自blog.csdn.net/fdgugfv/article/details/83989443