C语言常用的几个算法

#include <stdio.h>

//冒泡排序

void maopao(int arr[],int len){

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

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

if(arr[j] > arr[j+1]){

int temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

}

}

//选择排序

void selectSort(int arr[],int len){

int temp;

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

for(int j=i+1;j<len;j++){

if(arr[i] > arr[j]){

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

}

}

//折半算法   也称为  二分查找算法

int TwoSort(int * ListData,int ListLength)

{

int i = 0;

int j = 0;

for(i=1;i<=ListLength;i++)

{

int tmp = ListData[i];

int low = 0;

int hight = i-1;

int mid;

while(low <= hight)

{

mid = (low+hight)/2;

if(tmp > ListData[mid])

low = mid+1;

else

hight = mid-1;

}

for(j=i-1;j>=low;j--)

ListData[j+1]=ListData[j];

ListData[low]=tmp;

}

return 0;

}

int main(){

int a[9] = {1,3,5,7,6,8,9,2,4};

printf("\n冒泡排序源数据\n");

for(int g=0;g<9;g++){

printf("%d\t",a[g]);

}

maopao(a,9);

printf("\n冒泡排序后数据\n");

for(int i=0;i<9;i++)

printf("%d\t",a[i]);

int b[9] = {1,3,5,7,6,8,9,2,4};

printf("\n选择排序源数据\n");

for(int g=0;g<9;g++){

printf("%d\t",b[g]);

}

selectSort(b,9);

printf("\n选择排序后数据\n");

for(int i=0;i<9;i++)

printf("%d\t",b[i]);

int c[9] = {1,3,5,7,6,8,9,2,4};

printf("\n折半算法源数据\n");

for(int g=0;g<9;g++){

printf("%d\t",c[g]);

}

TwoSort(c,9);

printf("\n折半算法后数据\n");

for(int i=0;i<9;i++)

printf("%d\t",c[i]);

return 0;

}

时间: 2024-10-07 05:25:06

C语言常用的几个算法的相关文章

Go语言开发(十四)、Go语言常用标准库四

Go语言开发(十四).Go语言常用标准库四 一.heap 1.heap简介 heap仅仅提供了最小堆的操作,没有提供堆的数据结构,堆的数据结构必须由开发者自己实现.heap提供了一个heap.Interface接口来作为堆的操作和堆的数据结构(开发者自己实现)之间的桥梁,堆的数据结构必须满足此接口: type Interface interface { sort.Interface Push(x interface{}) // add x as element Len() Pop() inter

Go语言开发(十五)、Go语言常用标准库五

Go语言开发(十五).Go语言常用标准库五 一.md5 1.md5简介 md5在crypto/md5包中,md5包提供了New和Sum方法. func New() hash.Hash func Sum(data []byte) [Size]byte hash.Hash继承了io.Writer,因此可以将其当成一个输入流进行内容的更新. type Writer interface { Write(p []byte) (n int, err error) } Write方法将p中的内容读入后存入到h

R语言常用基础知识

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),    length.out = NULL, along.with = NULL, ...) 举例----------Examples----------seq(0, 1, length.out=11) seq(stats::rnorm(20)) #  seq(1, 9, by = 2)     #  seq(1, 9, by = pi)    #  seq(1, 6, by =

[C/C++基础] C语言常用函数sprintf和snprintf的使用方法

Sprintf 函数声明:int sprintf(char *buffer, const char *format [, argument1, argument2, -]) 用途:将一段数据写入以地址buffer开始的字符串缓冲区 所属库文件: <stdio.h> 参数:(1)buffer,将要写入数据的起始地址:(2)format,写入数据的格式:(3)argument:要写的数据,可以是任何格式的. 返回值:实际写入的字符串长度 说明:此函数需要注意缓冲区buffer溢出,要为写入的arg

易语言常用模块

~~~易语言常用的几个模块,收藏了!   下载 常量模块.ec 精易模块.ec 皮肤模块.ec                      调用举例:       皮肤_资源加载 (#皮肤_迅雷7) 闪电_水波纹特效模块.ec      源码下载 阳天模块.ec ~~~易语言常用的几个模块,收藏了!   下载

[C/C++基础] C语言常用函数strlen的使用方法

函数声明:extern unsigned int strlen(char *s); 所属函数库:<string.h> 功能:返回s所指的字符串的长度,其中字符串必须以'\0'结尾 参数:s为字符串的初始地址 使用举例: 代码如下 编译运行结果 说明: 函数strlen比较容易理解,其功能和sizeof很容易混淆.其中sizeof指的是字符串声明后占用的内存长度,它就是一个操作符,不是函数:而strlen则是一个函数,它从第一个字节开始往后数,直到遇见了'\0',则停止. [C/C++基础] C

ABAP语言常用的系统字段及函数

常用的系统变量如下: 1. SY-PAGNO当前页号 2. SY-DATUM当前时间 3. SY-LINSZ当前报表宽度 4. SY-LINCT当前报表长度 5. SPACE空字符 6. SY-SUBRC执行状态为0,表示成功. 7. SY-UNAME 用户名 8. SY-UZEIT当前时间 9. SY-TCODE当前的事务代码 10. SY-LSIND列表索引页 11. SY-LISTI上一个列表的索引 12. SY-LILLI绝对列表中选定行的行号 13. SY-CUROW屏幕上的行 14.

[C/C++基础] C语言常用函数memset的使用方法

函数声明:void *memset(void *s, int ch, size_t n); 用途:为一段内存的每一个字节都赋予ch所代表的值,该值采用ASCII编码. 所属函数库:<memory.h> 或者 <string.h> 参数:(1)s,开始内存的地址:(2)ch和n,从地址s开始,在之后的n字节长度内,把每一个字节的值都赋值为n. 使用举例: 代码如下 编译运行结果 说明: 该函数最常用的用途就是将一段新分配的内存初始化为0.例如我们代码的第9-10行. 需要注意的是,函

游戏制作中的大宝剑---常用的数据结构与算法

前言 时间流逝,物是人非,就好像涌动的河流,永无终焉,幼稚的心智将变得高尚,青年的爱慕将变得深刻,清澈之水折射着成长. ----------<塞尔塔传说> PS:为了方便大家阅读,个人认为比较重要的内容-------红色字体显示 个人认为可以了解的内容-------紫色字体显示 --------------------------------------------------------------------------- ---------------------------------