一、宏定义及头文件
#include <stdio.h>
#include <math.h>
#include <string.h>
#include<stdlib.h>
#include<time.h>
#ifndef u8
typedef unsigned char u8;
#endif
#ifndef u16
typedef unsigned short int u16;
#endif
#ifndef u32
typedef unsigned int u32;
#endif
#ifndef u64
typedef unsigned long long int u64;
#endif
#ifndef s8
typedef signed char s8;
#endif
#ifndef s16
typedef signed short int s16;
#endif
#ifndef s32
typedef signed int s32;
#endif
#ifndef s64
typedef signed long long int s64;
#endif
二、生成随机数
void vGeneration_Random_Number(u16 * pDat, u16 maxVal, u16 minVal, u16 num)
{
u16 i = 0;
u16 dat = 0;
u16 temp = 0;
temp = maxVal - minVal + 1;
srand(time(NULL));
for (i = 0; i < num; ++i)
{
dat = (u16)((rand() % temp) + minVal);
*(pDat + i) = dat;
}
}
三、冒泡升排序
void vBubble_RiseSort_U16(u16 * pDat, u16 len)
{
u16 i = 0, j = 0;
u16 temp = 0;
for (i = 0; i < (len - 1); i++)
{
for (j = (i + 1); j < len; j++)
{
if (*(pDat + j) < *(pDat + i))
{
temp = *(pDat + i);
*(pDat + i) = *(pDat + j);
*(pDat + j) = temp;
}
}
}
}
四、数据集中度分析
void vConcentrate_Analyse(u16 * pDat, u16 len, u16 startIndex, u16 gapVal, u16 actCount)
{
u16 i = 0;
u16 num = 1;
u8 valid = 0;
u16 index = 0;
u16 start = 0;
start = index = startIndex;
for (i = start; i < len - 1; i++)
{
if ((pDat[i + 1] - pDat[i]) <= gapVal)
{
num++;
valid = 1;
}
else
{
valid = 0;
}
if ((valid == 0) || (i == (len - 2)))
{
if (num >= actCount)
{
printf("Index:%-3d Num:%-3d ==> ", index, num);
for (u16 x = index; x < (num + index); x++)
{
printf("[%02d]%-4d ", x, pDat[x]);
}
printf("\r\n");
}
index = i + 1;
num = 1;
}
}
}
五测试例程
int main(void)
{
#define DAT_NUM (20)
u16 Dat[20] = {0};
u16 i = 0;
vGeneration_Random_Number(Dat, 500, 50, DAT_NUM);
vBubble_RiseSort_U16(Dat, DAT_NUM);
printf("Original Data:\r\n");
for (i = 0; i < DAT_NUM; i++)
{
if ((i) && (i%5==0))
printf("\r\n");
printf("[%02d]%-5d ", i, Dat[i]);
}
printf("\r\n\r\n");
printf("Concentrate Analyse:\r\n");
vConcentrate_Analyse(Dat, DAT_NUM, 2, 30, 3);
printf("Date: %s %s\r\n", __DATE__, __TIME__);
while (1);
return 0;
}
六、运行情况
开始运行...
Original Data:
[00]51 [01]76 [02]90 [03]107 [04]108
[05]118 [06]131 [07]154 [08]168 [09]268
[10]319 [11]357 [12]377 [13]383 [14]387
[15]421 [16]443 [17]448 [18]467 [19]478
Concentrate Analyse:
Index:2 Num:7 ==> [02]90 [03]107 [04]108 [05]118 [06]131 [07]154 [08]168
Index:11 Num:4 ==> [11]357 [12]377 [13]383 [14]387
Index:15 Num:5 ==> [15]421 [16]443 [17]448 [18]467 [19]478
Date: Jul 18 2022 13:42:47
开始运行...
Original Data:
[00]147 [01]150 [02]152 [03]183 [04]199
[05]201 [06]232 [07]236 [08]239 [09]248
[10]260 [11]272 [12]299 [13]304 [14]336
[15]353 [16]372 [17]381 [18]436 [19]499
Concentrate Analyse:
Index:3 Num:3 ==> [03]183 [04]199 [05]201
Index:6 Num:8 ==> [06]232 [07]236 [08]239 [09]248 [10]260 [11]272 [12]299 [13]304
Index:14 Num:4 ==> [14]336 [15]353 [16]372 [17]381
Date: Jul 18 2022 13:44:10
开始运行...
Original Data:
[00]74 [01]166 [02]187 [03]189 [04]189
[05]234 [06]264 [07]271 [08]281 [09]317
[10]319 [11]326 [12]326 [13]363 [14]377
[15]412 [16]416 [17]482 [18]486 [19]494
Concentrate Analyse:
Index:2 Num:3 ==> [02]187 [03]189 [04]189
Index:5 Num:4 ==> [05]234 [06]264 [07]271 [08]281
Index:9 Num:4 ==> [09]317 [10]319 [11]326 [12]326
Index:17 Num:3 ==> [17]482 [18]486 [19]494
Date: Jul 18 2022 13:45:13