笔试题汇集之排序算法(C/C++)

原创 2012年03月25日 22:25:22

void swap(int* p, int* q) {

int temp;

temp = *p;

*p = *q;

*q = temp;

}

 

//冒泡排序

void sort(int* a, int n) {

for(int i=0; i<n-1;++i)

for(int j=0; j<n-i-1;++j)

if(a[j] > a[j+1])

swap<int>(a+j,a+j+1);

}

 

//选择排序

void sort2(int* a, int n) {

for(int i=0; i<n-1;++i) {

int temp = i;

for(int j=i; j<n; ++j){

if(a[temp] > a[j])

temp = j;

}

if(temp != i)

swap(a+temp, a+i);

}

}

 

//插入排序

void sort3(int* a, int n) {

for(int i=1; i<n; ++i){

for(int j=0; j<i; ++j){

if(a[i] < a[j]) {

swap(a+i, a+j);

for(int k=i; k>j+1;--k) {

swap(a+k, a+k-1);

}

break;

}

}

cout << "" << i << ":";

print(a, n);

}

}

 

//快速排序(一)

void sort4(int* a, int n) {

if(n <= 1)

return;

int left=0;

int right=n-1;

while(left<right) {

while(left<right&& a[left] <= a[right])

--right;

swap(a+left, a+right);

while(left<right&& a[left] <= a[right])

++left;

swap(a+left, a+right);

}

sort(a, left);

sort(a+left+1, n-left-1);

}

 

 

//快速排序(二)

void sort5(int* a, int n) {

if(n <= 1)

return;

int left=0;

int right=n-1;

int temp = a[0];

while(left<right) {

while(left<right&& temp <= a[right])

--right;

a[left] = a[right];

while(left<right&& a[left] <= temp)

++left;

a[right] = a[left];

}

a[left] = temp;

print(a, n);

sort5(a, left);

sort5(a+left+1, n-left-1);

}

电力项目中大数据技术的典型应用

典型业务场景在电力行业项目甚至大多数工业项目中,都会涉及到对传感器等设备的采集数据进行存储和处理这一典型的业务场景,具体流程为: 将传感器的采集数据汇集到前置的汇集器 前置的汇集器将实时数据数据传输到...
  • ZHBR_F1
  • ZHBR_F1
  • 2017年05月16日 16:53
  • 1097

C++中的指针用法汇集

在C++中,指针用得比较多,对于里面众多的指针用法,不免弄得有些糊涂,自从我从图书馆里借到一本谭浩强教授主编的《C++面向对象程序设计》后,才帮我理清了思路。现把部分内容展现给大家,希望对大家有所帮助...
  • kittyonly777
  • kittyonly777
  • 2013年05月20日 20:08
  • 273

C++面试题汇集

C++面试题汇集
  • Li_Ning_
  • Li_Ning_
  • 2016年04月30日 20:11
  • 261

C++ 语言知识汇集

1.bool bool result = true; bool flag = false; bool r = 100; cout
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年01月25日 10:26
  • 415

C++面试经典问题汇集

最近忙着找工作,终于找到感觉兴趣和专业能对上的了,也不想继续打酱油了,不期望最好的,选择自己适合的。第一个笔的是迅雷,来的很早(九月中旬),并以迅雷不及掩耳盗铃之势就结束了。笔完后就后悔了,后悔自己在...
  • yangbingzhou
  • yangbingzhou
  • 2014年07月03日 17:13
  • 636

C++语言知识汇集 - 02

1.引用 1)引用不是变量 2)引用仅仅只是变量的别名 3)引用没有自己的独立内存空间 4)引用要与它所引用的变量共享内存空间 5)对引用所做的改变实际上是对它所引用的变量的改变 6)...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年01月25日 13:30
  • 451

Java通信知识点汇集

网络通信是怎么炼成的?Socket编程 两台计算机通过网络进行通信的必备条件是什么:IP地址,端口号,协议 Tcp/ip协议是最广泛的网络协议 Transfer control protocol...
  • windy1030
  • windy1030
  • 2016年07月19日 06:53
  • 293

C++ 语言知识汇集 -03

类型转换 1.static_cast 最常用的类型转换符,在正常状况下的类型转换,如把int转换为float,如:int i;float f; f=(float)i;或者f=static_cast(i...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年01月25日 13:54
  • 390

C++ 学习基础篇(一)—— C++与C 的区别

程序的学习学无止境,只掌握一门语言是远远不够的,现在我们开始C++的学习之路,下面先看下C++ 与C 的区别 一、C++概述 1、发展历史       1980年,Bjarne Stroustrup博...
  • zqixiao_09
  • zqixiao_09
  • 2016年04月24日 20:36
  • 15302

C与C++在opencv中的区别

Opencv官方文档中提供的接口类型有c的,也有C++的,其实这两者之间并没有什么区别,或者更精确地说,区别很小,我所知道的只有一个,下面会介绍。首先,这里是一个关于用C还是C++的问题(http:/...
  • zxjor91
  • zxjor91
  • 2015年06月28日 20:20
  • 846
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:笔试题汇集之排序算法(C/C++)
举报原因:
原因补充:

(最多只允许输入30个字)