One 许增宝

在堆空间进行冒泡排序
代码:#include <stdio.h> #include <string> #incl...
扫描右侧二维码阅读全文
20
2019/04

在堆空间进行冒泡排序

代码:

#include <stdio.h>
#include <string>
#include <time.h>
#include <stdlib.h>
#define MAX 10
int main(void)
{
    // 调用随机数种子来保证每一次产生的随机数都不一样
    srand((unsigned int)time(NULL));
    // 申请内存空间
    int *p = (int *)malloc(sizeof(int) * MAX);
    printf("========排序前的值=========\n");
    for (int i = 0; i < MAX; i++)
    {    // 或写成p[i] = rand() % 50;
        *(p + i) = rand() % 50;
        printf("%d\n", *(p + i));
    }
    for (int i = 0; i < MAX - 1; i++)
    {
        for (int j = 0; j < MAX - 1 - i; j++)
        {
            if (*(p + j) < *(p + j + 1))
            {
                int temp = *(p + j);
                *(p + j) = *(p + j + 1);
                *(p + j + 1) = temp;
            }
        }
    }
    printf("========排序后的值=========\n");
    for (int i = 0; i < MAX; i++)
    {    // 或写成p[i] = rand() % 50;
        printf("%d\n", *(p + i));
    }
    free(p);
    system("pause");
    return 0;
}

/*
输出结果:
========排序前的值=========
39
5
49
12
16
1
2
11
31
43
========排序后的值=========
49
43
39
31
16
12
11
5
2
1
*/

 程序第15行*(p + i) = rand() % 50;也可以写成p[i] = rand() % 50;;但是不能写成*p++ = rand() % 50;,因为这样的话,就已经改变了指针指向的地址了,程序会报错!

最后修改:2019 年 04 月 20 日 12 : 38 AM

发表评论