1 找出数组最小的k个数## 标题 ##
@1;最简单也最直观的解法。对数组排序,顺序输出前k个数字。最快的是利用快排,时间复杂度为o(nlogn);
@2:利用快排中的partition ,该函数的思想为划分数组为两部分 左半部小于枢纽值,右半边大于枢纽值。利用该算法,可以得出本题的算法我们可以把最终的low值定位在 第k-1的位置。代码如下。
void mypartition(data[],int low,int high,int k)
{       
        int pivot=0;
       while(pivot!=k-1)
       {
           pivot=partition(data,low,high);
           if(pivot<k-1)
           pivot=partition(data,pivot+1,high);
           else
           pivot=partition(data,low,pivot-1);
       }
      for(int i=0;i<k;i++)
      printf("%d",data[i]);
      putchar("\n");  
}
 
                   
                   
                   
                   
                             本文介绍了一种高效的方法来查找数组中的最小k个数,通过使用快速排序中的partition函数,实现时间复杂度为O(nlogn)。
本文介绍了一种高效的方法来查找数组中的最小k个数,通过使用快速排序中的partition函数,实现时间复杂度为O(nlogn)。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   499
					499
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            