C语言面试题(三)
这篇主要聚焦在排序算法,包括常见的选择排序,插入排序,冒泡排序,快速排序。会对这四种排序的时间复杂度和空间复杂度进行探究。
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语言面试题(三)的更多相关文章
- C语言面试题(嵌入式开发方向,附答案及点评)
整理自C语言面试题(嵌入式开发方向,附答案及点评) 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SEC ...
- 转 C语言面试题大汇总
转 C语言面试题大汇总,个人觉得还是比较全地!!! \主 题: C语言面试题大汇总,个人觉得还是比较全地!!! 作 者: free131 (白日?做梦!) 信 誉 值: 100 ...
- 嵌入式开发—C语言面试题
嵌入式开发—C语言面试题 源地址:http://blog.csdn.net/xdx2ct1314/article/details/7358929 1. 用预处理指令#define 声明一个常数,用 ...
- 数据结构与算法分析——C语言描述 第三章的单链表
数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...
- C语言面试题汇总之一
C语言面试题汇总之一 1.static有什么用途?(请至少说明两种) l 限制变量的作用域: 设置变量的存储域. 2.引用和指针有什么区别? 引用必须被初始化,指针不必: 引用初始化以后不能被改变,指 ...
- C语言中的三字母词
C语言中的三字母词(trigraph) 在ANSI C标准中,定义了9个三字母词(trigraph),三字母词就是几个字符的序列,合起来表示另一个字符.三字母词使C语言环境可以在缺少一些必需字符的字符 ...
- 12个有趣的C语言面试题
摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int ma ...
- c语言面试题之sizeof
c语言面试题之sizeof */--> c语言面试题之sizeof Table of Contents 1. sizeof 1 sizeof sizeof是c语言中判断数据类型或者表达式的长度符 ...
- Java语言基础(三)
Java语言基础(三) 一. 补码 (1).之所以有补码是因为要考虑成本 就是造计算机的成本 (2).下面让我们分析一下补码 以四位补码为例 <1> 高位是符号位,它决定其是正数还是 ...
- Go语言学习笔记三: 常量
Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...
随机推荐
- 有效的PhoneGap CSS: WebKit Tap Highlight Color
原文链接:文章1:http://phonegap-tips.com/articles/essential-phonegap-css-webkit-tap-highlight-color.html(此文 ...
- IOS第14天(1,UITabBarController的基本的使用)
**************HMAppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWit ...
- itertools 介绍
在python中itertool为python提供一系列迭代iterator的方法. 第一个:组合 排列 itertools.combinations(sq, r) 该函数的作用是在列表sq中穷举所有 ...
- ThinkPHP 3.2.3 URL 路由的使用
ThinkPHP3.2.3 手册中路由的地址是: http://www.kancloud.cn/manual/thinkphp/1706 简单配置实例:在配置文件 config.php 中添加 //路 ...
- vba 工作案例1
手上有一份关于广东22个地市的数据,行列不符合预期的表结构,稍vba转换下,再text import 到oracle. Sub copy() ' ' copy 宏 ' ' 快捷键: Ctrl+Shif ...
- DHCP Set Hostname
参考: FreeBSD DHCP Set Hostname ( Empty Hostname After Reboot ) -- http://www.cyberciti.biz/faq/freebs ...
- .NET 框架基本原理透析⑴
.NET框架的核心便是通用语言运行时(CLR),顾名思义它是一个可被各种不同的编程语言所使用的运行时.CLR的很多特性可用于所有面向它的编程语言.比如,如果CLR用异常来报告错误,那么所有面向它的语言 ...
- centos 修改网卡名为eth0
centos7和centos6的命名规则不同,centos6网卡名由udev控制 网卡名以eth开头然后第一块网卡叫eth0第二块网卡叫eth1,然后centos7的网卡命名规则截然不同 centos ...
- mysql中int、bigint、smallint 和 tinyint的区别
使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储 ...
- vue.js慢速入门(2)
4.组件使用基础 什么是组件?组件可以理解为可重用的自定义HTML. 可以使用一堆组件来构造大型应用,任意类型的应用界面都可以抽象为一个组件树: 可以把组件代码按照template.style.scr ...