用C语言编写一段程序,对采集的50个浮点数a[50]进行排序

用C语言编写一段程序,对采集的50个浮点数a[50]进行排序,第1张

#include <stdio.h>

int a[101],n//定义全局变量,这两个变量需要在子函数中使用

void quicksort(int left,int right)

{

 int i,j,t,temp

 if(left>right)

 return

 temp=a[left] //temp中存的就是基准数

 i=left

 j=right

 while(i!=j)

 {

 //顺序很重要,要先从右往左找

 while(a[j]>=temp && i<j)

 j--

 //再从左往右找

 while(a[i]<=temp && i<j)

 i++

 //交换两个数在数组中的位置

 if(i<j)//当哨兵i和哨兵j没有相遇时

 {

 t=a[i]

 a[i]=a[j]

 a[j]=t

 }

 }

 //最终将基准数归位 

第 1 章 一大波数正在靠近——排序

19

 a[left]=a[i]

 a[i]=temp

 quicksort(left,i-1)//继续处理左边的,这里是一个递归的过程

 quicksort(i+1,right)//继续处理右边的,这里是一个递归的过程

}

int main()

{

 int i,j,t

 //读入数据

 scanf("%d",&n)

 for(i=1i<=ni++)

 scanf("%d",&a[i])

 quicksort(1,n) //快速排序调用

 //输出排序后的结果

 for(i=1i<=ni++)

 printf("%d ",a[i])

 getchar()getchar()

 return 0

}

建议采用DS18B20芯片。

/**************************************

温度传感器DS18B20测试程序

主芯片 : STC90C52RC (12T)

工作频率: 12.000MHz

**************************************/

#include "REG51.H"

#include "INTRINS.H"

typedef unsigned char BYTE

sbit DQ = P3^3//DS18B20的数据口位P3.3

BYTE TPH //存放温度值的高字节

BYTE TPL //存放温度值的低字节

void DelayXus(BYTE n)

void DS18B20_Reset()

void DS18B20_WriteByte(BYTE dat)

BYTE DS18B20_ReadByte()

void main()

{

DS18B20_Reset() //设备复位

DS18B20_WriteByte(0xCC) //跳过ROM命令

DS18B20_WriteByte(0x44) //开始转换命令

while (!DQ) //等待转换完成

DS18B20_Reset() //设备复位

DS18B20_WriteByte(0xCC) //跳过ROM命令

DS18B20_WriteByte(0xBE) //读暂存存储器命令

TPL = DS18B20_ReadByte() //读温度低字节

TPH = DS18B20_ReadByte() //读温度高字节

while (1)

}

/**************************************

延时X*10微秒(STC90C52RC@12M)

不同的工作环境,需要调整此函数

当改用1T的MCU时,请调整此延时函数

**************************************/

void DelayX0us(BYTE n)

{

while (n--)

{

_nop_()

_nop_()

}

}

/**************************************

复位DS18B20,并检测设备是否存在

**************************************/

void DS18B20_Reset()

{

CY = 1

while (CY)

{

DQ = 0//送出低电平复位信号

DelayX0us(48) //延时至少480us

DQ = 1//释放数据线

DelayX0us(6) //等待60us

CY = DQ //检测存在脉冲

DelayX0us(42) //等待设备释放数据线

}

}

/**************************************

从DS18B20读1字节数据

**************************************/

BYTE DS18B20_ReadByte()

{

BYTE i

BYTE dat = 0

for (i=0i<8i++) //8位计数器

{

dat >>= 1

DQ = 0//开始时间片

_nop_() //延时等待

_nop_()

DQ = 1//准备接收

_nop_() //接收延时

_nop_()

if (DQ) dat |= 0x80 //读取数据

DelayX0us(6) //等待时间片结束

}

return dat

}

/**************************************

向DS18B20写1字节数据

**************************************/

void DS18B20_WriteByte(BYTE dat)

{

char i

for (i=0i<8i++) //8位计数器

{

DQ = 0//开始时间片

_nop_() //延时等待

_nop_()

dat >>= 1 //送出数据

DQ = CY

DelayX0us(6) //等待时间片结束

DQ = 1//恢复数据线

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11971053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存