C语言冒泡排序的实现
来源:互联网 发布:阿里云cdn测评 编辑:程序博客网 时间:2024/05/22 00:20
冒泡排序是一种最简单的排序方法,通过比较相邻的元素,若发生倒序,则交换,使最大值“沉”到最后。其空间复杂度为O(1),时间复杂度为O(n2)。冒泡排序是一种稳定的排序,可可用于顺序或者链式存储结构,平均时间性能比直接插入差。当初始记录无序且n较大时,不宜采用此方法。
首先是预定义和类型定义:
#define OK 1#define ERROR 0typedef int ElemType;typedef int Status;typedef struct{ElemType *data;int length;}SqList;
顺序表创建:
Status EnSqList(SqList *L, ElemType e, int n){L->data[n] = e;L->length++;return OK;}
冒泡排序算法:
void BubbleSort(SqList *L){int j, temp, flag = 1;while (flag == 1 && (L->length - 1) > 0){flag = 0;for (j = 0; j < (L->length - 1); j++){if (L->data[j]>L->data[j + 1]){flag = 1;temp = L->data[j];L->data[j] = L->data[j + 1];L->data[j + 1] = temp;}}}}
初始化flag为1表示数组无序,当数组无序并且数组长度大于1的时候,执行循环:
先领flag=0,假设数组有序,然后j从0开始判断j号元素是否比j+1号元素大,若大,则交换位置,最终使其“沉”到最后一位,并让flag为1表示数组仍然无序。
重复执行以上操作。
加入main():
int main(void){SqList L;ElemType e;int i, n;L.length = 0;printf("输入元素个数:");scanf("%d", &n);L.data = (int *)malloc(sizeof(int)*n);srand((int)time(0));for (i = 0; i < n; i++){e = rand();EnSqList(&L, e, L.length);}printf("原数组:");for (i = 0; i < L.length; i++)printf("%d ", L.data[i]);printf("\n");BubbleSort(&L);printf("排序后:");for (i = 0; i < L.length; i++)printf("%d ", L.data[i]);printf("\n");return 0;}
0 0
- 冒泡排序算法的c语言实现
- 冒泡排序的C语言实现
- 冒泡排序的C语言实现
- C语言冒泡排序的实现
- 冒泡排序的C语言实现
- C语言实现简单的冒泡排序
- C语言实现冒泡排序
- 冒泡排序C语言实现
- 冒泡排序C语言实现
- 实现冒泡排序(c语言)
- 冒泡排序--C语言实现
- 冒泡排序--c语言实现
- 冒泡排序(C语言实现)
- 冒泡排序C语言实现
- c语言实现冒泡排序
- c语言实现冒泡排序
- C语言实现冒泡排序
- C语言实现冒泡排序
- 洛谷 P1303 A*B Problem
- 嵌入式Linux学习:u-boot源码分析(3)--AM335X系列的2014.10版
- 从0到1学习node之简易的网络爬虫
- Detection Green Balls
- 洛谷 P1604 B进制星球
- C语言冒泡排序的实现
- unit 11-12作业
- 支付宝签名验证机制
- 谷哥的小弟学前端(08)——CSS基础知识(6)
- VC++创建快捷方式
- python数据分析之csv/txt数据的导入和保存
- 说了这么久大数据 究竟大数据与传统数据有啥不一样
- 从0到1学习node之简易的网络爬虫_0
- NVCC简单学习