#include <stdio.h>

int *ga;
int galen;
void print_a(){
for(int i = ; i < galen; i++){
printf("%d ",ga[i]);
}
printf("\n");
} //k = di k da yuan su
int quick_findk(int *a, int len, int k){
if(len <= )
return a[];
int *p,*l,*r,tmp;
p=&a[len-];
l=a;
r=&a[len-];
while(l < p){
printf("len:%d , k:%d\n",len,k);
print_a();
while(*l<*p && l!=p)
l++;
while(*r>*p && r>l)
r--; if(l != r && l < r){
tmp = *l;
(*l) = (*r);
*r = tmp;
}else{
tmp = *p;
(*p) = (*l);
*l = tmp;
print_a();
int index = l - a;
printf("index:%d v:%d\n",index,a[index]);
if(index == len-k){
return *l;
}else if(index < len-k){//in right
return quick_findk(&a[index+],len-index-,k);
}else if(index > len-k){//in left
return quick_findk(a,index,k-(len - index));
}
}
}
} void main(){
int a[] = {,,,,,};
int len = sizeof(a) / sizeof(a[]);
ga = a;
galen = len;
int r = quick_findk(a, len, ); //
printf("%d \n",r);
}
root@ubuntu:~/cdir# gcc quicksort_findk.c -o quicksort_findk.bin -g
root@ubuntu:~/cdir# ./quicksort_findk.bin
len: , k: len: , k: index: v:
len: , k: index: v:
len: , k: index: v:
len: , k: index: v:

最后 = 3

最新文章

  1. Swift_UI_UIButton
  2. js使用模板快速填充数据
  3. Draggabilly – 轻松实现拖放功能(Drag &amp; Drop)
  4. linux 相关快捷键
  5. [BZOJ1789][BZOJ1830][Ahoi2008]Necklace Y型项链
  6. iOS面试必看,最全梳理
  7. 基本的git命令
  8. SQL 四种连接:内连接、左外连接、右外连接、全连接--转载
  9. GO逆转字符串
  10. 纯CSS3实现的图片滑块程序 效果非常酷
  11. Java编程思想非主流知识点
  12. 用vue官方提供的模板vue-cli搭建一个helloWorld案例
  13. 子线程导致 Windows 服务停止的情况(Topshelf 结合 Quartz.NET)
  14. 洛谷P3195 玩具装箱TOY
  15. Python写日志
  16. Java并发编程:volatile关键字解析-转
  17. 深入分析Java的编译原理
  18. javascript 节点操作拷贝节点cloneNode()
  19. HTML5的新结构标签
  20. 3.node的url属性

热门文章

  1. 微信小程序通过getPhoneNumber后台PHP解密获取用户手机号码
  2. go语言设计模式之Chain Of Responsibility(责任链)
  3. 9. java API使用 - Scanner类
  4. qtdomdocument找不到
  5. Cisco pppoe上网设置
  6. 算法设计与分析 2.5 Joyvan的难题
  7. css发展史
  8. 【使用篇二】SpringBoot整合aop(13)
  9. LVS负载均衡实现双向热备
  10. 【洛谷5335】[THUSC2016] 补退选(指针实现Trie)