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

a.选择排序

 int main(int argc,char **argv){
int a[]={,,,,,,,,,,,};
int i,j,t,tmp;
for(i=;i<-;i++){
t=i;
for(j=i;j<;j++){
if (a[t]>a[j]) t=j;
}
if (t!=i){
tmp=a[i];
a[i]=a[t];
a[t]=tmp;
}
}
for(i=;i<;i++)printf("%d ",a[i]);
return ;
}

b.插入排序

 int main(int argc,char **argv){
int a[]={,,,,,,,,,,,};
int i,j,t,tmp;
for(i=;i<;i++){
t=a[i];
j=i-;
while(j>=&&a[j]>t){
a[j+]=a[j];
file:///E|/embed/Linux/book/c_note.txt[2015-05-30 23:43:42]j--;
}
a[j+]=t;
}
}
for(i=;i<;i++)printf("%d ",a[i]);
return ;
}

c.冒泡排序

 int main(int argc,char **argv)
{
int a[]={,,,,,,,,,,,};
int i,j,t;
for(i=;i<;i++)
{
for(j=;j<-i;j++)
{
if (a[j]>a[j+])
{
t=a[j];
a[j]=a[j+];
a[j+]=t;
}
}
}
for(i=;i<;i++)printf("%d ",a[i]);
return ;
}

d.快速排序

 void qsort(int s[], int l, int r)
{
int i, j, x;
if (l < r)
{
i = l;
j = r;
x = s[i];
while (i < j)
{
while(i < j && s[j] > x) j--; /* 从右向左找第一个小于x的数 */
if(i < j) s[i++] = s[j];
while(i < j && s[i] < x) i++; /* 从左向右找第一个大于x的数 */
if(i < j) s[j--] = s[i];
}
s[i] = x;
qsort(s, l, i-); /* 递归调用 */
qsort(s, i+, r);
}
}

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. Unity学习疑问记录之正交与透视

    Unity中相机的投影是2种方式,正交和透视 这是透视方式 正交方式: //计算屏幕宽度 float height = 2.0f * Camera.main.orthographicSize;//正交 ...

  2. 实现memcpy

    memcpy的原型: SYNOPSIS #include <string.h> void *memcpy(void *dest, const void *src, size_t n); D ...

  3. Mac OS X系统下利用VirtualBox安装和配置Windows XP虚拟机

    准备工作 下载并安装VirtualBox for Mac到https://www.virtualbox.org/wiki/Downloads下载VirtualBox <版本> for OS ...

  4. git http\https\git免密设置记住用户名和密码的方法

    设置记住密码(默认15分钟): git config --global credential.helper cache如果想自己设置时间,可以这样做: git config credential.he ...

  5. Android自动化测试工具——monkey简介及入门

    记得第二家单位的安卓开发在上线前都用monkey压几个小时,确实也能发现些问题,崩溃率低了些,没测过的确实可以压一压 搜了下资料,monkey确实很简单,发现问题自己搜下是什么问题,别一发现什么就跑去 ...

  6. JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置

    众所周知,在进行接口测试的过程中,需要创建不同的场景(不同条件的输入,来验证不同的入参的返回结果).因而,在日常的自动化接口监控或商品监控等线上监控过程中,需要配置大量的入参来监控接口的返回是否正确. ...

  7. Python开发【第三章】:Python编码转换

    一.字符编码与转码 1.bytes和str 之前有学过关于bytes和str之间的转换,详细资料->bytes和str(第四字符串) 2.为什么要进行编码和转码 由于每个国家电脑的字符编码格式不 ...

  8. Hadoop学习笔记: 全排序

    在Hadoop中实现全排序有如下三种方法: 1. 只使用一个reducer 2. 自定义partitioner 3. 使用TotalOrderPartitioner 其中第一种方法显然违背了mapre ...

  9. sysctl kernel parameter Optimization note

    syncookies cookies the connection state,when the ack arrives,then deal with the pause connection,ver ...

  10. 献给初学者:谈谈如何学习Linux操作系统

    本文出自 “技术成就梦想” 博客,请务必保留此出处http://ixdba.blog.51cto.com/2895551/569329. 为了能把这篇不错的文章分享给大家.所以请允许我暂时用原创的形式 ...