数据结构与算法(13)冒泡排序
来源:互联网 发布:ps软件使用视频教程 编辑:程序博客网 时间:2024/05/16 12:34
冒泡排序的原理
将临近元素依次进行比较,如果顺序不符合要求就调整到正确的顺序。如有n个元素就进行 n - 1趟这样的比较,每趟比较可以将一个最值元素位置确定下来,这样的排序算法称为冒泡排序
测试代码
/*冒泡排序算法时间复杂度为O(n^2)*/#include <stdio.h>#include <stdlib.h>#pragma warning(disable: 4996)#define LIST_MAX_SIZE 20#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;typedef char DataType[10];typedef int KeyType;typedef struct{ KeyType key; DataType data;}Node;typedef Node List[LIST_MAX_SIZE];Status Swap(Node *L1, Node *L2){ Node temp; temp = *L1; *L1 = *L2; *L2 = temp; return OK;}/*按递增的顺序,冒泡排序*/Status BubbleSort_1(List L, int n){ int i, j; for (i = 0; i < n - 1; ++i){ //需要检查n - 1次,将n - 1个元素进行归位 for (j = 0; j < n - 1 - i; ++j){//每次归位的是最后一个元素,减而治之剩下的元素 if (L[j].key > L[j + 1].key){ Swap(&L[j], &L[j + 1]); } } } return OK;}/*按照递减的顺序进行冒泡排序*/Status BubbleSort_2(List L, int n){ int i, j; for (i = 0; i < n - 1; ++i){ for (j = 0; j < n - 1 - j; ++j){ if (L[j].key < L[j + 1].key){ Swap(&L[j], &L[j + 1]); } } } return OK;}/*可以将排好序的元素放置在左侧位置*/Status BubbleSort_3(List L, int n){ int i, j; for (i = 0; i < n - 1; ++i){ for (j = i; j < n - 1; ++j){ if (L[j].key < L[j + 1].key){ Swap(&L[j], &L[j + 1]); } } } return OK;}int main(){ List L; int n, i; KeyType a[] = { 12, 32, 43, 124, 454, 23, 12, 45, 565 }; n = sizeof(a) / sizeof(a[0]); for (i = 0; i < n; ++i){ L[i].key = a[i]; } BubbleSort_1(L, n); printf("递增顺序为: \n"); for (i = 0; i < n; ++i){ printf("%d ", L[i].key); } printf("\n"); BubbleSort_3(L, n); printf("递减顺序为: \n"); for (i = 0; i < n; ++i){ printf("%d ", L[i].key); } printf("\n"); system("pause"); return 0;}
0 0
- 数据结构与算法(13)冒泡排序
- 数据结构与算法(冒泡排序算法)
- 【数据结构与算法】冒泡排序
- 数据结构与算法-冒泡排序
- 数据结构与算法-----冒泡排序
- 【数据结构与算法】冒泡排序
- 【数据结构与算法】冒泡排序
- 数据结构与算法javascript描述(四) 冒泡排序
- 数据结构与算法(C语言版)__冒泡排序
- 数据结构与算法(二)冒泡&&插入&&选择 简单排序
- 数据结构与算法(6)---Java语言实现:冒泡排序
- 数据结构与算法复习第二弹(冒泡排序)
- 冒泡排序 Java数据结构与算法
- 新手学习数据结构与算法---冒泡排序
- 数据结构与算法之二冒泡排序
- python数据结构与算法30 冒泡排序
- 数据结构精要------冒泡与直接排序算法
- 【数据结构与算法 01】冒泡排序
- Petrozavodsk Winter-2013. Ural FU Contest Problem D. Five Palindromes manacher、一个串切割成5个回文子串、优化
- bzoj 1044: [HAOI2008]木棍分割 二分答案+动态规划
- 进军爪哇第一题~~函数实例化
- [专题2016-08-19]功能测试中“瞄一眼”就能发现的性能问题
- 遇到 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo异常的一种特殊情况
- 数据结构与算法(13)冒泡排序
- Python中中文乱码问题
- java中的递归调用算法
- Java时间类Date全解析
- Android-满屏幕拖动的控件
- Android DIY之路 (四)拖拽替换,一个view发送其他所有view绑定即可监听到。
- 插入排序
- Ionic 列表
- SpringMVC中AcceptHeaderLocaleResolver分析