这篇主要聚焦在排序算法,包括常见的选择排序,插入排序,冒泡排序,快速排序。会对这四种排序的时间复杂度和空间复杂度进行探究。

a.选择排序

  1. int main(int argc,char **argv){
  2. int a[]={,,,,,,,,,,,};
  3. int i,j,t,tmp;
  4. for(i=;i<-;i++){
  5. t=i;
  6. for(j=i;j<;j++){
  7. if (a[t]>a[j]) t=j;
  8. }
  9. if (t!=i){
  10. tmp=a[i];
  11. a[i]=a[t];
  12. a[t]=tmp;
  13. }
  14. }
  15. for(i=;i<;i++)printf("%d ",a[i]);
  16. return ;
  17. }

b.插入排序

  1. int main(int argc,char **argv){
  2. int a[]={,,,,,,,,,,,};
  3. int i,j,t,tmp;
  4. for(i=;i<;i++){
  5. t=a[i];
  6. j=i-;
  7. while(j>=&&a[j]>t){
  8. a[j+]=a[j];
  9. file:///E|/embed/Linux/book/c_note.txt[2015-05-30 23:43:42]j--;
  10. }
  11. a[j+]=t;
  12. }
  13. }
  14. for(i=;i<;i++)printf("%d ",a[i]);
  15. return ;
  16. }

c.冒泡排序

  1. int main(int argc,char **argv)
  2. {
  3. int a[]={,,,,,,,,,,,};
  4. int i,j,t;
  5. for(i=;i<;i++)
  6. {
  7. for(j=;j<-i;j++)
  8. {
  9. if (a[j]>a[j+])
  10. {
  11. t=a[j];
  12. a[j]=a[j+];
  13. a[j+]=t;
  14. }
  15. }
  16. }
  17. for(i=;i<;i++)printf("%d ",a[i]);
  18. return ;
  19. }

d.快速排序

  1. void qsort(int s[], int l, int r)
  2. {
  3. int i, j, x;
  4. if (l < r)
  5. {
  6. i = l;
  7. j = r;
  8. x = s[i];
  9. while (i < j)
  10. {
  11. while(i < j && s[j] > x) j--; /* 从右向左找第一个小于x的数 */
  12. if(i < j) s[i++] = s[j];
  13. while(i < j && s[i] < x) i++; /* 从左向右找第一个大于x的数 */
  14. if(i < j) s[j--] = s[i];
  15. }
  16. s[i] = x;
  17. qsort(s, l, i-); /* 递归调用 */
  18. qsort(s, i+, r);
  19. }
  20. }

C语言面试题(三)的更多相关文章

  1. C语言面试题(嵌入式开发方向,附答案及点评)

    整理自C语言面试题(嵌入式开发方向,附答案及点评) 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SEC ...

  2. 转 C语言面试题大汇总

    转 C语言面试题大汇总,个人觉得还是比较全地!!! \主 题:   C语言面试题大汇总,个人觉得还是比较全地!!!  作 者:   free131 (白日?做梦!)   信 誉 值:   100    ...

  3. 嵌入式开发—C语言面试题

    嵌入式开发—C语言面试题 源地址:http://blog.csdn.net/xdx2ct1314/article/details/7358929   1. 用预处理指令#define 声明一个常数,用 ...

  4. 数据结构与算法分析——C语言描述 第三章的单链表

    数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...

  5. C语言面试题汇总之一

    C语言面试题汇总之一 1.static有什么用途?(请至少说明两种) l 限制变量的作用域: 设置变量的存储域. 2.引用和指针有什么区别? 引用必须被初始化,指针不必: 引用初始化以后不能被改变,指 ...

  6. C语言中的三字母词

    C语言中的三字母词(trigraph) 在ANSI C标准中,定义了9个三字母词(trigraph),三字母词就是几个字符的序列,合起来表示另一个字符.三字母词使C语言环境可以在缺少一些必需字符的字符 ...

  7. 12个有趣的C语言面试题

    摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int ma ...

  8. c语言面试题之sizeof

    c语言面试题之sizeof */--> c语言面试题之sizeof Table of Contents 1. sizeof 1 sizeof sizeof是c语言中判断数据类型或者表达式的长度符 ...

  9. Java语言基础(三)

    Java语言基础(三) 一.    补码 (1).之所以有补码是因为要考虑成本 就是造计算机的成本 (2).下面让我们分析一下补码 以四位补码为例 <1> 高位是符号位,它决定其是正数还是 ...

  10. Go语言学习笔记三: 常量

    Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...

随机推荐

  1. 有效的PhoneGap CSS: WebKit Tap Highlight Color

    原文链接:文章1:http://phonegap-tips.com/articles/essential-phonegap-css-webkit-tap-highlight-color.html(此文 ...

  2. IOS第14天(1,UITabBarController的基本的使用)

    **************HMAppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWit ...

  3. itertools 介绍

    在python中itertool为python提供一系列迭代iterator的方法. 第一个:组合 排列 itertools.combinations(sq, r) 该函数的作用是在列表sq中穷举所有 ...

  4. ThinkPHP 3.2.3 URL 路由的使用

    ThinkPHP3.2.3 手册中路由的地址是: http://www.kancloud.cn/manual/thinkphp/1706 简单配置实例:在配置文件 config.php 中添加 //路 ...

  5. vba 工作案例1

    手上有一份关于广东22个地市的数据,行列不符合预期的表结构,稍vba转换下,再text import 到oracle. Sub copy() ' ' copy 宏 ' ' 快捷键: Ctrl+Shif ...

  6. DHCP Set Hostname

    参考: FreeBSD DHCP Set Hostname ( Empty Hostname After Reboot ) -- http://www.cyberciti.biz/faq/freebs ...

  7. .NET 框架基本原理透析⑴

    .NET框架的核心便是通用语言运行时(CLR),顾名思义它是一个可被各种不同的编程语言所使用的运行时.CLR的很多特性可用于所有面向它的编程语言.比如,如果CLR用异常来报告错误,那么所有面向它的语言 ...

  8. centos 修改网卡名为eth0

    centos7和centos6的命名规则不同,centos6网卡名由udev控制 网卡名以eth开头然后第一块网卡叫eth0第二块网卡叫eth1,然后centos7的网卡命名规则截然不同 centos ...

  9. mysql中int、bigint、smallint 和 tinyint的区别

    使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储 ...

  10. vue.js慢速入门(2)

    4.组件使用基础 什么是组件?组件可以理解为可重用的自定义HTML. 可以使用一堆组件来构造大型应用,任意类型的应用界面都可以抽象为一个组件树: 可以把组件代码按照template.style.scr ...