C/C++格式范本

/*******************************************************************************
/* <PRE>
/* 版权所有    : -
/* 模块名      : 排序
/* 文件名      : sort.cpp
/* 功能描述    : 排序方法的实现
/* 作者        : <xxx>
/* 版本        : 1.0
/* -----------------------------------------------------------------------------
/* 备注        : -
/* -----------------------------------------------------------------------------
/* 修改记录    :
/* 日 期        版本     修改人        修改内容
/* 2011/01/01   1.0      <xxx>         创建
/* </PRE>
/*******************************************************************************
/*
/*   1. 排序方法分类 (稳定的排序用‘Y‘表示,不稳定的排序用‘N‘表示)
/*
/*   插入排序:直接插入排序(Y)、希尔排序
/*   交换排序:冒泡排序(Y)、快速排序(N)
/*   选择排序:直接选择排序(N)、堆排序(N)
/*   归并排序:二路归并排序(Y)
/*
/*==============================================================================
/*
/*   2. 排序方法的特点
/*
/*   快速排序:适合对无序记录排序,平均性能最好,时间复杂度为O(nlogn)
/*   直插排序:从待排序列中依次取出元素与已排子序列比较,找出在已排子序列中的位置。元素有序时比较次数最少。
/*   冒泡排序:每一趟把最大元素置后
/*   选择排序:从待排序列中选出最小的元素,放在已排子序列的末端。能在排序完成前能输出前几个最小的元素
/*   堆排序:类似于选择排序,是完全二叉树的一种应用。一趟排序后最后一个元素或最大或最小
/*   直接插入排序和冒泡排序:元素逐个比较,时间复杂度为O(n^2)
/*
*******************************************************************************/
#include <stdio.h>

/******************************************************************************
/* 数据类型和常量定义
/******************************************************************************/
#define LQ(a, b) ((a) <= (b))

/******************************************************************************
/* 函数原型声明
/******************************************************************************/
void InsertSort(int x[], int n); //直接插入排序
void BubbleSort(int x[], int n); //冒泡排序
void QuickSort(int x[], int low, int high); //快速排序
void SelectSort(int x[], int n); //简单选择排序

/*******************************************************************************
/* <FUNC>
/* 函数名   : InsertSort
/* 功能     : 直接插入排序
/* 参数     : int x[],   待排序列
/*            int n,     序列中元素个数
/* 返回值   : -
/* 备注     : -
/* 作者     : <xxx>
/* </FUNC>
*******************************************************************************/
void InsertSort(int x[], int n)
{
    int sentinel = 0; /* sentinel: 哨兵 */
    int i, j, k;
    for(i = 1; i < n; i++) /* 序列中的第一个元素可以看成一个有序表 */
    {
        if(LQ(x[i], x[i - 1]))
        {
            sentinel=x[i]; /* 复制为哨兵 */
            for(j = i - 1; j >= 0 && LQ(sentinel, x[j]); --j)
                x[j + 1] = x[j]; /* 记录后移 */
            x[j + 1] = sentinel; /* 插入到正确位置 */
        }
        printf("第 %d 趟排序后的结果: ", i); /*输出每一趟排序的结果*/
        for(k = 0; k < n; k++)
            printf("%d ", x[k]);
        printf("\n");
    }
}

/*******************************************************************************
/* <FUNC>
/* 函数名   : BubbleSort
/* 功能     : 冒泡排序
/* 参数     : int x[],   待排序列
/*            int n,     序列中元素个数
/* 返回值   : -
/* 备注     : 一种交换排序
/* 作者     : <xxx>
/* </FUNC>
*******************************************************************************/
void BubbleSort(int x[], int n)
{
    int temp, exchange;
    int i, j, k;
    for(i=n-1; i>0; i--)  //最多做n-1趟排序
    {
        exchange=0; //本趟排序开始前, 交换标志应为假
        for(j=0; j<i; j++)
        {
            if(LQ(x[j+1], x[j]))
            {
                temp=x[j+1];
                x[j+1]=x[j];
                x[j]=temp;
                exchange=1;
            }
        }
        if(!exchange) //本趟排序未发生交换,提前终止算法
            break;
        printf("第 %d 趟排序后的结果: ", n-i); /*输出每一趟排序的结果*/
        for(k=0; k<n; k++)
            printf("%d ", x[k]);
        printf("\n");
    }
}

/*******************************************************************************
/* <FUNC>
/* 函数名   : QuickSort
/* 功能     : 快速排序
/* 参数     : -
/* 返回值   : -
/* 备注     : 一种交换排序
/* 作者     : <xxx>
/* </FUNC>
*******************************************************************************/
int Partition(int x[], int low, int high)
{
    int sentinel = x[low];
    int pivotkey = x[low];
    while(low < high)
    {
        while(low<high && LQ(pivotkey, x[high])) --high;
        x[low] = x[high];
        while(low<high && LQ(x[low], pivotkey)) ++low;
        x[high] = x[low];
    }
    x[low]=sentinel;
    return low;
}

void QuickSort(int x[], int low, int high)
{
    int pivotloc, k;
    if(low < high)
    {
        pivotloc=Partition(x, low, high);
        printf("排序过程: "); /*输出每一趟排序的结果*/
        for(k=0; k<8; k++)
            printf("%d ", x[k]);
        printf("\n");
        QuickSort(x, low, pivotloc-1);
        QuickSort(x, pivotloc+1, high);
    }
}

/*******************************************************************************
/* <FUNC>
/* 函数名   : SelectSort
/* 功能     : 简单选择排序
/* 参数     : -
/* 返回值   : -
/* 备注     : 一种选择排序
/* 作者     : <xxx>
/* </FUNC>
*******************************************************************************/
int SelectMinKey(int x[], int low, int high)
{
    int temp = x[low], pos=low;
    while(low <= high)
    {
        if(LQ(x[low], temp))
        {
            temp = x[low];
            pos = low;
        }
        low++;
    }
    return pos;
}

void SelectSort(int x[], int n)
{
    int i, j, k, temp;
    for(i=0; i<n; i++)
    {
        j = SelectMinKey(x, i, n-1);
        if(i!=j)
        {
            temp=x[i];
            x[i]=x[j];
            x[j]=temp;
        }
        printf("第 %d 趟排序后的结果: ", i+1); /*输出每一趟排序的结果*/
        for(k=0; k<n; k++)
            printf("%d ", x[k]);
        printf("\n");
    }
}

/*******************************************************************************
/* <FUNC>
/* 函数名   : main
/* 功能     : 测试函数
/* 参数     : -
/* 返回值   : -
/* 备注     : -
/* 作者     : <xxx>
/* </FUNC>
*******************************************************************************/
void main()
{
    int x[10] = {10, 35, 19, 23, 17, 18, -1, 3, 12, 5}, i;
    printf("\n直接插入排序序列: ");
    for(i=0; i<10; i++)
            printf("%d ", x[i]);
    printf("\n\n");
    InsertSort(x, 10);
    printf("\n\n");

    int y[10] = {88, 29, 48, 37, 16, 5, 14, 32, -2, 11};
    printf("冒泡排序序列: ");
    for(i=0; i<10; i++)
        printf("%d ", y[i]);
    printf("\n\n");
    BubbleSort(y, 10);
    printf("\n\n");

    int z[8] = {49, 38, 65, 97, 76, 13, 27, 49};
    printf("快速排序序列: ");
    for(i=0; i<8; i++)
        printf("%d ", z[i]);
    printf("\n\n");
    QuickSort(z, 0, 7);
    printf("\n\n");

    int m[10] = {19, 45, 0, 17, 16, 8, 24, 14, 3, 11};
    printf("简单选择排序序列: ");
    for(i=0; i<10; i++)
        printf("%d ", m[i]);
    printf("\n\n");
    SelectSort(m, 10);
    printf("\n");
}

来源:http://www.cnblogs.com/JCSU/articles/1311584.html

C/C++格式范本

时间: 2024-11-25 11:36:29

C/C++格式范本的相关文章

在Linux命令行下发送html格式的邮件

在Linux利用formail+sendmail来发送带图片的邮件 formail接收html格式的文件作为邮件的内容,这样就可以解决发送带图片邮件的问题了,因为html中可以插入图片,只要给出的img src为可用的链接就行了. 命令格式如下cat mailfile.html | formail -I "MIME-Version:1.0" -I "Content-type:text/html;charset=gb2312" -I "Subject:lay

PAT 1006 换个格式输出 C语言

让我们用字母B来表示"百".字母S表示"十",用"12...n"来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个"百".3个"十".以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000). 输出格式:每个测试用例的输出占一行,用规定的格式输出n. 输入样例1: 234 输出样例1: BBSSS1

Ubuntu下安装deb格式的软件

首先在网页上下载用到的软件包deb格式的 然后,在软件包所在的位置打开终端,输入红色的指令 [email protected]:~/下载$ sudo apt install gdebi-core[sudo] tori 的密码: 正在读取软件包列表... 完成正在分析软件包的依赖关系树       正在读取状态信息... 完成       gdebi-core 已经是最新版 (0.9.5.7ubuntu1).升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 14 个软件包未被

linux命令格式,获取帮助及其目录结构简要理解

我们都知道,一台计算机要是没通电,和一堆废铁没什么区别.那么,通电开机进入系统后,会进入交互界面,等待用户操作,人与计算机交互界面有两种: GUI:图形用户接口.如我们平时使用的Windows  ,linux的X window,有KDE和GOME. CLI:命令行接口,使用的SHELL类型有bash ,csh,tcshell,zshell等. 例如:[[email protected] ~]# commandbin root:当前登录的用户名. dxlcentOS:当前主机的主机名.@是一个分隔

Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)

在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^). 注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此,本文涉及到的汇编代码均以AT&T Syntax为准. 1. 基本语法规则 内联汇编(或称嵌入汇

C#格式符

在输出字符串时,使用格式说明  使字符串显示适当的格式,比如:货币格式,或者科学计数法.百分比等. 以下是格式化的数字字符串  格式. {index, alignment: format} 例如: 1 int num=101; 2 Console.WriteLine("Number01: {0,4:C}",num); 将得到如下结果: Number01: 1.010000E+002 这里index 为必需,其指定了输出的顺序,但是指定字符串长度的alignment为可选,其参数指定对齐

笔记:Jersey REST 传输格式

通常REST接口会以XML或JSON作为主要传输格式,同时 Jersey 也支持其他的数据格式,比如基本类型.文件.流等格式. 基本类型 Java的基本类型又叫原生类型,包括4种整数(byte.short.int.long).2种浮点类型(float.double).Unicode编码的字符(char)和布尔类型(boolean),Jersey 支持全部的基本类型,还支持与之相关的引用类型,示例代码如下: REST 服务代码 @POST @Path("b") public String

笔记:Jersey REST 传输格式-JSON

JSON 类型已经成为Ajax技术中数据传输的实际标准,Jersey 提供了多种处理JSON数据的包和解析方式,下表展示了JSON包和解析方式: 解析方式\JSON支持包 MOXy JSON-P Jackson 基于POJO的JSON绑定 是 否 是 基于JAXB的JSON绑定 是 否 是 低级的(逐字的)JSON解析和处理 否 是 否 使用 MOXy 处理JSON MOXy 是 EclipseLink项目的一个模块,是使用JAXB和SDO作为XML绑定的技术基础,实现了JSR222标准(JAX

【巨坑】springmvc 输出json格式数据的几种方式!

最近公司项目需要发布一些数据服务,从设计到实现两天就弄完了,心中窃喜之. 结果临近部署时突然发现.....  服务输出的JSON 数据中  date 类型数据输出格式要么是时间戳,要么是  {"date":26,"day":1,"hours":21,"minutes":38,"month":5,"seconds":22,"time":1498484302259,&qu