c++排序算法

来源:百度知道 编辑:UC知道 时间:2024/06/23 08:04:35
求用Dev-C++写的二分排序、交换排序、插入排序、快速排序算法及统计数字重复的算法。谢谢!
P.S:

**不能用模版,头文件限制:仅<stdio> <stdlib> <cmath> <ctype> <string> <float.h> <iostream> <string> <fstream>

静态内存空间总和不得超过20MB,动态申请内存空间的总和不得超过30MB

不使用自己的头文件

主函数的返回值必须为0

文件头格式:
#include <iostream>
#include <fstream>
#include .........

ifstream ifs("...");
ofstream ofs("...");

//定义变量区(除循环控制变量)
//定义函数区

int main()
{
...........
}
//函数代码区
本人要参加比赛,比赛规定不能用!!!!!一艘不然我早用了!!!!!!!!!!!!!!
比赛在十一月,我这时候不问,十一月就来不及了。。。。。。

1.排序算法在实际中的应用当然也就是排序了。在实际应用当中比如数据统计等方面都会用到。而且对一组数据进行排序也方便了后面对数据查找的操作。要知道在一个有序数组中查找和在一个随机无序数组中的查找的时间复杂度和系统消耗是有天壤之别的。

2.算法复杂度其实是一个估计,也就是那个O(n)。首先O这个操作的定义为:如果f(n)是正整数n的一个函数,则Xn = O(f(n))表示存在一个正的常数M,使得当n大于等于某一个整数n0时都满足Xn小于等于M乘以f(n)。这个在算法中的实际意义就是:
比如,执行一个排序算法最多需要执行5n+7条命令(语句):最多表示在执行过程中循环被完整的执行,也就是比如循环条件从1-n,那么这个循环最多就是可以执行n次。如果这个循环里面有5条基本语句(递增循环变量i++也包括在内),那么就是5n条语句。那么根据上面O函数的定义,这个时候Xn = 5n + 7。注意到当n大于等于7的时候5n+7小于等于6n,也就是说我们可以把6看成是M,n看成是f(n),于是我们可以说,这个算法的时间复杂度是O(n)。对于其他的O(n^2), O(n log n)等等都是这个道理。在计算总共执行的命令条数的时候要考虑“最坏”(从循环初始条件到循环最终条件,条件分支也要尽可能的考虑最多的情况)的可能性,然后每一条基本语句(比如一次赋值,一次比较等)都要计入

用c++写算法却不用模板是一大败笔。

参加比赛作弊你牛什么

问作业也就罢了,比赛题目也来问就太过分了