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

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

《快速排序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]);
}



相关文章
|
机器学习/深度学习 并行计算 PyTorch
机器学习环境配置
机器学习环境配置
397 1
机器学习环境配置
|
算法 数据可视化 前端开发
第三代软件开发-QCustomPlot核心迁移
欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。 在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。 在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资
|
设计模式 JSON 前端开发
SpringBoot中对LocalDateTime进行格式化并解析
SpringBoot中对LocalDateTime进行格式化并解析
1118 0
|
9月前
|
存储 测试技术 Python
Python 中别再用 ‘+‘ 拼接字符串了!
通过选择合适的字符串拼接方法,可以显著提升 Python 代码的效率和可读性。在实际开发中,根据具体需求和场景选择最佳的方法,避免不必要的性能损失。
169 5
|
JSON 安全 API
构建高效后端API:最佳实践与代码示例
【8月更文挑战第2天】 在数字化时代,后端API是连接数据与用户的桥梁。本文深入探讨了如何设计并实现高效的后端API,从理论到实践,提供了实用的技巧和代码示例。通过阅读本篇文章,你将学会如何避免常见的陷阱,优化你的API性能,从而提供更加流畅的用户体验。
|
存储 前端开发 Java
Android应用开发中的MVP架构模式实践
【5月更文挑战第5天】随着移动应用开发的复杂性增加,传统的MVC(Model-View-Controller)架构在应对大型项目时显得笨重且不灵活。本文将探讨一种更适应现代Android应用开发的架构模式——MVP(Model-View-Presenter),并展示如何在Android项目中实现该模式以提升代码的可维护性和可测试性。通过对比分析MVP与传统MVC的差异,以及提供一个实际案例,读者将能深入了解MVP的优势和实施步骤。
236 9
|
传感器 监控 物联网
什么是物联网卡
物联网卡(IoT SIM卡)是专门为物联网设备提供网络连接的SIM卡,它在物联网技术中扮演着至关重要的角色。以下是对物联网卡的详细解释:
|
存储 人工智能 自然语言处理
|
前端开发
MVVM框架原理
MVVM框架(Model-View-ViewModel)是一种基于数据绑定的前端架构模式。它将视图逻辑与业务逻辑分离,提供了一种简单而清晰的方式来管理和组织代码。
769 0
|
JSON 前端开发 Java
SpringBoot之JSON参数,路径参数的详细解析
SpringBoot之JSON参数,路径参数的详细解析
532 0