易截截图软件、单文件、免安装、纯绿色、仅160KB

直接选择排序 C代码

void StraightSelectionSort(int array[], unsigned int n)
{
/*
注:关键字值类型为int,数组的索引是从0开始
1. 初始状态无序区为array【0, n - 1】,有序区为空。
2. 第1趟排序从array【0, n - 1】中找到下标为k的关键字最小值,把array【k】和
array【0】交换。现在无序区为array【1, n - 1】, 有序区为array【0, 0】。
第2趟排序...
第3趟排序...
...
3. 第i趟排序(1 <= i <= n - 1),从array【i, n - 1】中找到下标为j的关键字最小值,把
array【j】和array【i - 1】交换,如果i == n - 1,则排序结束,否则继续3步骤。
*/
/* 总共需要n - 1次排序,从1到n - 1 */
for (int i = 1; i <= n - 1; i++)
{
/* k值从0到n - 2, 最后一个记录关键字值必定是最大的 */
int k = i - 1;
int swap = 0;
/* 这个for循环找到第i趟排序中无序区关键字值最小记录的下标 */
for (int j = i; j < n; j++)
{
if (array[j] < array[k])
{
k = j;
}
}
/* 如果数组中紧接有序区的无序区的第一个记录就是无序区中关键字值最小的,则不用交换 */
if (k != (i - 1))
{
swap = array[i - 1];
array[i - 1] = array[k];
array[k] = swap;
}
}
/*
算法分析
1. 关键字比较次数。
无论记录的初始状态,比较次数都是1 + 2 + 3 + 4 + ... + (n - 1) = n * (n -1) / 2;
2. 记录移动次数。
最好情况下0次, 正序, 最坏情况下3 * (n - 1)次, 反序。
那么直接选择排序的时间复杂度就是:O(n * n)。
3. 直接选择排序是一个就地排序。辅助空间O(1)。
非就地排序一般要求的辅助空间为O(n)。
4. 直接选择排序不稳定的。
反例
下标:【1 2 3】
关键字值:2 2 1
进过直接选择排序第一个2和第二个2相对位置发生了改变。
*/
}


相关文档:

c头文件最后要加一个空行,知道为什么嘛?

 以前学生时代的时候就有遇到过这个问题,不过没去深究;
现在也是老问题,其实很简单,就是为了防止#include两个头文件的时候,把第一个头文件的最后一行和 第二个头文件的第一行拼接成一行;呵呵,其实很多问题都很简单,而且很隐蔽,只是我们很多时候没去注意! ......

Visual Studio 2008 下生成C/C++ 汇编代码

在项目属性页 --> 配置属性 --> C/C++ --> 输出文件里面,将汇编输出的下拉列表从无列表选择为你需要汇编输出的内容,比如“仅列出程序集(/FA)”,如图1-1,图1-2:
 
图1-1
 
图1-2
------------------------------------------------------------------------------------------------ ......

求教高手 关于C播放wav问题


最近在网上查了好多关于C播放wav这方面的资料,调试半天也没有结果,搜到一个编译好的EXE文件能播放,没有源代码,反汇编不了,谁能指点一下。。。。。以下两种代码段:
 #include <stdio.h>
#include <dos.h>
/* wav文件结构 */
typedef struct WaveData
{
   unsigned long sample_le ......

linux 系统下使用C程序实现时钟的函数

#include "stdio.h"
#include "math.h"
#include "time.h"
#define INTERVAL 1  定义宏的时间间隔为1秒
//
void On_Time()  //每一秒激发的事件
{
   printf("now=%s\n","JJK"); 
}
void Timer()  //时钟的函数
{  time_t newclk,oldclk;
   while(1)
 &nb ......

Windows下C网络编程入门

http://blog.csdn.net/Ackarlix/archive/2007/08/25/1758412.aspx
Windows下C网络编程入门
C语言的学习,一般的方式是,先学C,然后是C++,最好还要有汇编语言和微机原理基础,然后才是Visual C++。这样的方式,对学习者来说,要花费很多时间和耐力。而在学校教学中,也没有时间深入学习Windows编程的实用技术了。
   ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号