比这篇新的文章: Codee#5765
比这篇旧的文章: 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 }


所有评论,共0条:( 我也来说两句)


发表评论

注册登录后再发表评论