快速排序[优化枢轴及不必要的交换]

简介:

采用三数取中,并用0下标元素存储枢轴。

 
  1. //CodeBy Pnig0s1992  
  2. #include <iostream>  
  3. using namespace std;  
  4.  
  5.  
  6. int Partition(int * L,int low,int high);  
  7. void QuickSort(int * L,int low,int high);  
  8.  
  9. int main(int argc,char * argv[])  
  10. {  
  11.     int L[10]={0,50,10,90,30,70,40,80,60,20};  
  12.     QuickSort(L,1,9);  
  13.     for (int index=1;index<=9;index++)  
  14.     {  
  15.         cout<<L[index]<<endl;  
  16.     }  
  17.     system("pause");  
  18.     return 0;  
  19. }  
  20.  
  21. void QuickSort(int * L,int low,int high)  
  22. {  
  23.     int privot;  
  24.     if(low<high)  
  25.     {  
  26.         privot = Partition(L,low,high);  
  27.         QuickSort(L,1,privot-1);  
  28.         QuickSort(L,privot+1,high);  
  29.     }  
  30. }  
  31.  
  32. int Partition(int * L,int low,int high)  
  33. {  
  34.     int privo;  
  35.     int m = low+(high-low)/2;  
  36.     if(L[high]<L[m])  
  37.         swap(L[m],L[high]);  
  38.     if(L[high]<L[low])  
  39.         swap(L[low],L[high]);  
  40.     if(L[m]>L[low])  
  41.         swap(L[m],L[low]);  
  42.  
  43.     privo = L[low];  
  44.     L[0] = privo;  
  45.     while(low<high)  
  46.     {  
  47.         while (low<high&&L[high]>=privo)  
  48.         {  
  49.             high--;  
  50.         }  
  51.         L[low] = L[high];  
  52.         //swap(L[low],L[high]);  
  53.         while(low<high&&L[low]<=privo)  
  54.         {  
  55.             low++;  
  56.         }  
  57.         L[high] = L[low];  
  58.         //swap(L[low],L[high]);  
  59.     }  
  60.     L[low] = L[0];  
  61.     return low;  
  62. }  

 


















本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/795896,如需转载请自行联系原作者

相关文章
|
13天前
|
数据采集 人工智能 安全
|
8天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
631 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
348 164
|
7天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
358 155

热门文章

最新文章