快速排序C实现(阿里巴巴 2012年笔试题)

《快速排序C实现》 这篇文章最早是我原创,2012年发表在当时我的百度空间的一篇文章,没想到机缘巧合,此题竟然无意中被阿里巴巴选录,被改成填空题,成为当年阿里巴巴全国校招的笔试题,机缘巧合,可叹可叹!现在博客搬家,我重新把这篇文章保持原貌、原封不动从百度空间搬到CSDN新的博客。

#include <stdio.h>

/*输出*/
void show(int [],int);

void quickSort(int array[],int left,int right)
{

   if(left>right)

          return;

 /*取最左边的值为pivot(基准)*/
     int i=left,j=right,pivot=array[left];

    while(i<j)
    {
         while( (i<j) && (pivot <= array[j]) )
            j--;
         if(i<j)
            array[i++]=array[j];

  while( (i<j) && (array[i] <= pivot) )
             i++;
         if(i<j)
             array[j--]=array[i];
 }

     array[j]=pivot;/*也可以是 array[i]=piovt。因为此时i=j*/

    quickSort(array,left,i-1);
    quickSort(array,i+1,right);
}

void main()
{
 /*测试数据*/
 //int array[]={4,3,9,0,8,5,7,1,6,2};
 int array[]={9,8,7,6,5,4,3,2,1,0,123,22,34,22,56,76,345,221};

 int LEN=sizeof(array)/sizeof(int);

 printf("原始数组:\n");
 show(array,LEN);
 printf("\n-----\n");

 quickSort(array,0,LEN-1);

 printf("\n排序结果:\n");
 show(array,LEN);
}

/*打印*/
void show(int a[],int len)
{
 int i;
 for(i=0;i<len;i++)
  printf("%d ",a[i]);
}



时间: 2024-10-12 17:11:16

快速排序C实现(阿里巴巴 2012年笔试题)的相关文章

2014.3.29阿里巴巴暑期实习笔试题分析

参考:http://blog.csdn.net/iloveyoujelly/article/details/22941531 下面中的[分析]是我给出的. 2014.3.29阿里巴巴暑期实习笔试题分析 一.单选 1.假设一个主机ip为192.168.5.121,子网掩码为255.255.255.248,则该主机的网络号部分(包括子网号部分)为-- A.192.168.5.12  B 192.168.5.121   C 192.168.5.120   D 192.168.5.32 参考答案 C [

2013年阿里巴巴暑期实习生笔试题--2013年5月5日考试

一.单项选择题 1.下列说法错误的是: A.SATA硬盘的速度大约为500Mbps/s B.读取18XDVD光盘数据的速度为1Gbps C.千兆以太网的数据读取速度为1Gpbs D.读取DDR3内存数据的速度为100Gbps 分析:A和B相比,怎么光盘的速度比硬盘还快?B必错无疑啊.千兆以太网的速度是1000Mbps,也可以写成1Gbps.DDR3-1600的极限传输速度是12.8GBp/s 2.()不能用于Linux中的进程通信 A.共享内存 B.命名管道 C.信号量 D.临界区 分析:Lin

阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出

分布式系统中的RPC请求经常出现乱序的情况. 写一个算法来将一个乱序的序列保序输出.例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是: 1 2 3, 4, 5 6 7, 8, 9, 10 上述例子中,3到来的时候会发现4,5已经在了.因此将已经满足顺序的整个序列(3, 4, 5)输出为一行. 要求: 1. 写一个高效的算法完成上述功能,实现要尽可能的健壮.易于维护 2. 为该算法设计并实现单元测试 貌似效率不是很高,有时间的时候改进下.

2017阿里巴巴前端在线笔试题

选择题: 1. let obj = Object.create({name: 'King'}); function foo(obj){ Object.setPrototypeOf(obj, null); return obj; } console.log(obj === foo(obj)); // true let obj = [1,2,3]; function foo(val){ val = [1,2,3]; return val; } console.log(obj === foo(obj)

阿里巴巴2017实习生笔试题(二)

1 下面哪一个不是动态链接库的优点? 正确答案: B   你的答案: B (正确) 共享 装载速度快 开发模式好 减少页面交换 解析: 1 静态链接库的优点 (1) 代码装载速度快,执行速度略比动态链接库快: (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题. 2 动态链接库的优点  (1) 更加节省内存并减少页面交换: (2) DLL文件与EXE文件独立,只要输出接口不变(即名称.参数

2016阿里巴巴实习生Java笔试题(4.20)

恒生电子2012实习笔试题

一.不定项选择题 1.B 2.AD 3.CD 4.A 5.ACD 6.BD 7.C 8.BCD 9.C 10.AB 主键不一定能提高查找的速度 二.填空题 1.奇,偶 2.ls -l,ps -aux 3. 4.BABBAB 5.数据定义,数据操作,数据控制 三.数据库 1. create table S(    Sno int primary key auto_increment,    Sname varchar(20) ); insert into S(sname) values('he')

阿里巴巴的一道笔试题

分布式系统中的RPC请求经常出现乱序的情况. 写一个算法来将一个乱序的序列报序输出,列如,假设起始序号是1,对于(1,2,5,8,10,4,3,6,9,7)这个序列,输出是 1 2 3,4,5 6 7,8,9,10 上述例子中,3到来的时候发现4,5已经在了,因此将已经满足顺序的整个序列(3,4,5)输出为一行. 要求: 1.写一个高效的算法完成上述功能,实现要求尽可能的健壮,易于维护 2.为该算法完成单元测试. 我的思路肯定不是最佳的,只是实现了而已,如果有更好的思路和优化请发送到评论区,谢谢

笔试题系列001

测试笔试题类型:软件测试| 试题:55道试题(50道选择题,5道问答题)http://bbs.sjtu.edu.cn/bbsanc,path,%2Fgroups%2FGROUP_9%2FJobInfo%2FD7CD26755%2FD85486036%2FM.1131274669.A.html http://202.197.191.206:8080/38/text/test/test_2/shijuan2.htm 软件工程 http://test.examw.com/410/P6517/一.单选题