动态内存分配实现冒泡排序
#include<stdio.h>
#include<stdlib.h>void swap(int *a,int *b)
{int t;t=*a;*a=*b;*b=t;
}int main()
{int n,i,j,*p;printf("有n个数需要排序,请输入n:\n");scanf("%d",&n);if((p=(int *)calloc(n,sizeof(int)))==NULL) //申请空间{printf("分配内存失败!\n");return 0;}printf("请输入n个数:\n"); for(i=0;i<n;i++){scanf("%d",p+i); //将n个数存入空间}printf("After sorted\n");for(i=1;i<n;i++){for(j=0;j<n-i;j++){if((*(p+j))>(*(p+j+1))) //实现冒泡排序{swap(p+j,p+j+1);}}}for(i=0;i<n;i++){printf("%-3d",*(p+i)); //输出}free(p); //记得释放你所申请的空间!!return 0;}
实现动态内存分配来解决问题我把它总结为3个大步骤:
(1)申请空间
(2)利用指针实现你所需的功能
(3)释放该空间
好了,说了这么多,有同学会问了:这动态内存分配有什么用!?我使用数组也能完成该任务!
实际上,该同学所说的数组解决问题,我们将其称为“静态解决方法”
以静态方式安排存储的好处是实现比较方便、效率高,程序执行中需要做的事情比较简单,
但是这种做法也有缺点,比如我上次的博客动态内存实现 任意个整数求和_ZZZWWWFFF_的博客-CSDN博客
如果使用数组解决该问题的话,我们每次需要求和的项数可能都不同,我们只能定义一个很大的数组以保证输入的项数不要超过数组能容纳的范围~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
而使用动态内存分配的好处就是我们能有效地使用内存,同一段内存区域可以被多次使用,使用时申请,用完就释放!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
动态内存分配实现冒泡排序相关推荐
- 6-7 使用动态内存分配的冒泡排序 (10 分)
编程实现冒泡排序函数int* bubble_sort(int n);.其中n为数组长度(1≤n≤1000). ###函数接口定义如下: int* bubble_sort(int n);/* 对长度为n ...
- 【C进阶】之动态内存分配及内存操作函数
动态内存分配及内存操作函数 1 动态内存分配的介绍 2 malloc和free函数 3 测试代码 4 goto的使用场合,常用于出错处理 5 memset() 6 memcpy() 7 memcmp( ...
- 释放变量所指向的内存_C++动态内存分配(学习笔记:第6章 15)
动态内存分配[1] 动态申请内存操作符 new new 类型名T(初始化参数列表) 功能: 在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值. 结果值: 成功:T类型的指针,指向 ...
- 动态内存分配与柔性数组
什么时动态内存分配 一般我们写程序都是在栈区分配空间,如果我们想根据需求想随时存放随时释放数据,堆区可以实现根据需求想系统申请所需大小的空间. 建立内存的动态分配 内存的动态分配是通过系统提供的函数来 ...
- C++中的动态内存分配
1.Cpp中的内存分配 了解动态内存在C++中是如何工作的是成为一名合格的C++程序员必不可少的.C++程序中的内存分为两个部分: 栈:在函数内部声明的所有变量都将占用栈内存. 堆:这是程序中未使用的 ...
- 【 C 】动态内存分配实用案例(二)之复制字符串
用动态分配内存制作一个字符串的一份拷贝.注意:调用程序应该负责检查这块内存是否分配成功,这样做允许程序以任何它所希望的方式对错误作出反应. #nclude <stdlib.h> #incl ...
- 【 C 】动态内存分配实用案例(一)之读取、排序和打印一列整形值
什么时候用动态内存分配呢?下面这个案例给出了一个比较实用且精彩地使用动态内存的场合,并且教你如何合理地使用动态内存分配? 动态内存分配一个常见的用途就是为那些长度在运行时才知的数组分配内存空间. 下面 ...
- 【 C 】动态内存分配案例分析
声明一个指向char类型的指针,可以在声明的时候就对其进行初始化,这样是合理的. 例如: E1: #include <stdio.h> #include <stdlib.h> ...
- 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
最新文章
- LSTM预测MNIST手写数字张量流图分析
- NanoPi NEO Air使用五:安装Xfce和xrdp,实现远程访问
- Java泛型详解-史上讲解最详细的,没有之一
- 天气预报开放API调用
- C#获取SQLServer数据库表名和字段名
- 2016 大数据版图
- 企业级开源电商系统5vShop商城系统源码v1.9.5
- Zookeeper 在Linux系统的安装
- USACO milk
- LightOJ 1055 BFS暴力
- [数据结构] 三十二叉堆
- 海康,大华 RTSP取流URL格式
- 虚拟机访问服务器文件夹,浅析CentOS8虚拟机访问Windows10主机文件夹方法
- 安装教程--010Editor
- python2 之 DataFrame
- 倪光南院士:网络安全和信息化要同步推进
- 程序员应该使用的键盘中英文切换设置
- 华为 eNSP 模拟器配置动态路由(ospf)
- 45.常用的数学工具类2-三角函数的使用
- Flutter中的圆角和圆形效果