-
-
[原创]【C语言】测试排序算法运行效率的算法
-
发表于: 2022-4-27 19:06 6116
-
废话
事情是这个样子的,前几天看了c语言一个非常神奇的用法就是可以函数里面套函数
当时是参考一个师傅博客(师傅的博客连接找不到了。。)里面的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
52
53
54
55
|
#include #define YES 1 #define NO 0 / / / * 判断函数,进行元素大小判断,increase判断大小比较 * /
int compare( int a, int b, int increase)
{ if (increase > 0 ) {
if (a > b) return YES;
else return NO;
}
else
{
if (a < b) return YES;
else return NO;
}
} / * 冒泡排序进行数组排序 * /
void OrderArr( int arry[], int ( * compare)( int , int , int ), int length, int increase = 1 )
{ for ( int i = 0 ; i < length - 1 ; i + + )
{
for ( int j = 0 ; j < length - i - 1 ; j + + )
{
if (compare( * (arry + j), * (arry + j + 1 ), increase))
{
int temp = * (arry + j + 1 );
* (arry + j + 1 ) = * (arry + j);
* (arry + j) = temp;
}
}
}
} / * 输出函数 * /
void Print ( int a[], int length)
{ for ( int i = 0 ; i < length; i + + )
{
printf( "%d " , * (a + i));
}
printf( "\n" );
} int main()
{ int a[ 5 ] = { 1 , 4 , 2 , 6 , 3 };
/ / 增序排列数组
OrderArr(a, compare, 5 );
Print (a, 5 );
/ / 降序排列数组
OrderArr(a, compare, 5 , - 1 );
Print (a, 5 );
} |
当时整个人都沸腾了,正好今天要写程序设计实践的作业,就想着试着用用,任务是这个样子的:
然后拍桌子!我直接一个程序就整好了
源码
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
|
#include #include #include #include using namespace std; const int N = 1e6 + 10 ;
int len ;
int s[N],result[N];
void bubble_sort( int arr[], int l, int r) { / / 冒泡排序
int i, j, temp;
for (i = 0 ; i < len - 1 ; i + + )
for (j = 0 ; j < len - 1 - i; j + + )
if (arr[j] > arr[j + 1 ]) {
temp = arr[j];
arr[j] = arr[j + 1 ];
arr[j + 1 ] = temp;
}
} void SelectSort( int num[], int l, int r)
{ int i,j,k,temp;
for (i = 0 ;i< len ;i + + )
{
k = i; / / 记录位置
for (j = i + 1 ;j< len ;j + + ) / / 查找后面的最小值
if (num[k]>num[j])
k = j; / / 记录位置
if (k! = i) / / 交换位置
{
temp = num[i];
num[i] = num[k];
num[k] = temp;
}
}
} void Insert_Sort( int arr[], int l, int r) { / / 降序
int length = len ;
for ( int i = 1 ; i < length; i + + ) {
while (arr[i] < arr[i - 1 ]) {
int tmp = arr[i];
arr[i] = arr[i - 1 ];
arr[i - 1 ] = tmp;
i - - ;
}
}
} void merge( int arr[], int start, int mid, int end)
{ int k = 0 ;
int i = start;
int j = mid + 1 ;
while (i < = mid && j < = end) {
if (arr[i] < arr[j]){
result[k + + ] = arr[i + + ];
}
else {
result[k + + ] = arr[j + + ];
}
}
if (i = = mid + 1 ) {
while (j < = end)
result[k + + ] = arr[j + + ];
}
if (j = = end + 1 ) {
while (i < = mid)
result[k + + ] = arr[i + + ];
}
for (j = 0 , i = start ; j < k; i + + , j + + ) {
arr[i] = result[j];
}
} void mergeSort( int arr[], int start, int end) {
if (start > = end)
return ;
int mid = ( start + end ) / 2 ;
mergeSort(arr, start, mid);
mergeSort(arr, mid + 1 , end);
merge(arr, start, mid, end);
} int partition( int arr[], int low, int high){
int key;
key = arr[low];
while (low
|
1、程序设计思路
1.测试的算法为:冒泡排序、简单选择排序、简单插入排序、归并排序、快速排序等
2.随机数组的生成通过c语言的srand和rand函数即可实现,并且根据需要的随机数的大小封装成一个函数
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-5-7 12:25
被Nameless_a编辑
,原因:
赞赏记录
参与人
雪币
留言
时间
飘零丶
为你点赞!
2024-7-29 06:37
伟叔叔
为你点赞~
2023-3-18 02:58
PLEBFE
为你点赞~
2023-1-12 16:33
赞赏
他的文章
- 西湖论剑2024 IOT赛后复盘及mqtt rce详解 16618
- 对某嵌入式设备声波配网的研究 12432
- DAS10月月赛PWN出题心路&&CVE-2023-40930的介绍 11779
- [原创]关于Nokelock蓝牙锁破解分析 22705
- [原创]基于树莓派的蓝牙调试环境搭建 24962
赞赏
雪币:
留言: