比这篇新的文章:
Codee#5765
比这篇旧的文章: Codee#5763
作者: , 点击195次, 评论(0), 收藏者(0), , 打分:
所有评论,共0条:( 我也来说两句)
比这篇旧的文章: Codee#5763
Codee#5764 编辑代码
语言: C++, 标签: 无 2009/09/07发布 12个月前更新 | 编辑代码作者: , 点击195次, 评论(0), 收藏者(0), , 打分:
C++语言: Codee#5764
01 #include <stdio.h>
02 #include <stddef.h>
03
04 int main(void)
05 {
06 int keys[] = { 5, 8, 9, 15, -18, 150, 0, 55, -5, -108, 100 };
07 int i;
08 const int keys_size = (sizeof keys) / (sizeof *keys);
09 /* prototype */
10 void my_qsort(int v[], int left, int right);
11
12 my_qsort( keys, 0, keys_size - 1 );
13 for ( i = 0; i < keys_size; ++i ) {
14 printf("%d ", keys[i]);
15 }
16
17 printf("\nPress ENTER to quit...");
18 getchar();
19 return 0;
20 }
21
22 /* my_qsort: sort v[left]...v[right] into increasing order */
23 void my_qsort(int v[], int left, int right)
24 {
25 int i, last;
26 /* prototype */
27 void my_swap(int v[], int i, int j);
28
29 if (left >= right) /* do nothing if array contains */
30 return; /* fewer than two elements */
31 my_swap(v, left, (left + right)/2); /* move partition elem */
32 last = left; /* to v[0] */
33 for (i = left + 1; i <= right; i++) /* partition */
34 if (v[i] < v[left])
35 my_swap(v, ++last, i);
36 my_swap(v, left, last); /* restore partition elem */
37 my_qsort(v, left, last-1);
38 my_qsort(v, last+1, right);
39 }
40
41 /* my_swap: interchange v[i] and v[j] */
42 void my_swap(int v[], int i, int j)
43 {
44 int temp;
45
46 temp = v[i];
47 v[i] = v[j];
48 v[j] = temp;
49 }
02 #include <stddef.h>
03
04 int main(void)
05 {
06 int keys[] = { 5, 8, 9, 15, -18, 150, 0, 55, -5, -108, 100 };
07 int i;
08 const int keys_size = (sizeof keys) / (sizeof *keys);
09 /* prototype */
10 void my_qsort(int v[], int left, int right);
11
12 my_qsort( keys, 0, keys_size - 1 );
13 for ( i = 0; i < keys_size; ++i ) {
14 printf("%d ", keys[i]);
15 }
16
17 printf("\nPress ENTER to quit...");
18 getchar();
19 return 0;
20 }
21
22 /* my_qsort: sort v[left]...v[right] into increasing order */
23 void my_qsort(int v[], int left, int right)
24 {
25 int i, last;
26 /* prototype */
27 void my_swap(int v[], int i, int j);
28
29 if (left >= right) /* do nothing if array contains */
30 return; /* fewer than two elements */
31 my_swap(v, left, (left + right)/2); /* move partition elem */
32 last = left; /* to v[0] */
33 for (i = left + 1; i <= right; i++) /* partition */
34 if (v[i] < v[left])
35 my_swap(v, ++last, i);
36 my_swap(v, left, last); /* restore partition elem */
37 my_qsort(v, left, last-1);
38 my_qsort(v, last+1, right);
39 }
40
41 /* my_swap: interchange v[i] and v[j] */
42 void my_swap(int v[], int i, int j)
43 {
44 int temp;
45
46 temp = v[i];
47 v[i] = v[j];
48 v[j] = temp;
49 }
所有评论,共0条:( 我也来说两句)
代码
