0%

冒泡法排序带下标同时排序

最近在做一个设备,里面有个类似闹钟的功能,我想要将所有的闹钟按照时间先后顺序排序一下,因为我是用一个数组存储的所有闹钟事件,所以需要将数组中时间相关的数据进行排序,同时获得数组的下标的顺序,下边是排序的Demo算法,很简单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

#define size 10
struct temp
{
int number;
int index;
};
int main()
{
int i = 0;
int s[size];
//通过随机数得到数组的初始值
srand(time(NULL));
struct temp tmp[size];
for (i=0; i<size; i++)
{
s[i] = rand() % 100;
tmp[i].number = s[i];
tmp[i].index = i;
}
cout << "输入的数组是:" << endl;
for (i=0; i<size; i++)
cout << s[i] << endl;

for (int j=0; j<size;j++)
{
for (int i=size-2; i>=j; i--)
if (s[i] > s[i+1])
{
int t = s[i];
s[i] = s[i+1];
s[i+1] = t;

temp tt;
tt.index = tmp[i].index;
tmp[i].index = tmp[i+1].index;
tmp[i+1].index = tt.index;
}
}
cout << endl << "排序后的数组是:" << endl;
for (i=0;i < size;i++)
cout << s[i] << endl;
cout << "排序后的数组下标是:" << endl;
for (i=0; i<size; i++)
cout << tmp[i].index << endl;
}