bubble sort详解
来源:互联网 发布:sat 句子合并 知乎 编辑:程序博客网 时间:2024/06/06 02:00
冒泡排序本是大家都很熟悉的一种排序,教科书也到处都是,今天突然在维基百科中看到还有一种优化的 bubble sort算法,不得不感慨是温故知新啊
数据结构 array
算法推演:
两种bubble的伪代码
procedure bubbleSort( A : list of sortable items ) n = length(A) for i = 0 to n - 1 for j = 1 to n-1 if A[j-1] > A[j] then swap( A[j-1], A[j] ) end if end for end forend procedure//优化后的算法procedure bubbleSort( A : list of sortable items ) n = length(A) repeat swapped = false for i = 1 to n-1 inclusive do if A[i-1] > A[i] then swap(A[i-1], A[i]) swapped = true end if end for n = n - 1 until not swappedend procedure
#include <stdio.h>void bubbleSort(int *arr, int length) { int i, j, tmp; for (i = 0; i < length - 1; i ++) { for (j = 0; j < length - i - 1; j++) { if (arr[j] > arr[j + 1]) { tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } }}int main(int argc, char *argv[]) { int arr[] = {9, 6, 5, 4, 2, 8}; for (int i = 0; i < 6; i++) { printf("i=%d\n", arr[i]); } bubbleSort(arr, 6); printf("sort ok\n"); for (int i = 0; i < 6; i++) { printf("i=%d\n", arr[i]); } return 0;}
#include <stdio.h>void optimize_bubble(int *arr, int length) { int i, tmp; while (1) { int isSwap = 0; for (i = 0; i < length - 1; i++) { if (arr[i] > arr[i + 1]) { tmp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = tmp; isSwap = 1; } } if (isSwap == 0) { break; } }}int main(int argc, char *argv[]) { int arr[] = {9, 8, 4, 5,29, 35, 2, 3, 7}; optimize_bubble(arr, 7); for (int k = 0; k < 7; k++) { printf("k=%d\n", arr[k]); } return 0;}
阅读全文
0 0
- bubble sort详解
- Bubble Sort (排序详解 之 冒泡排序)
- Bubble sort
- Bubble Sort
- bubble sort
- Bubble Sort
- Bubble Sort
- bubble sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble Sort
- Bubble sort
- Bubble Sort
- Bubble Sort
- bzoj1452 [JSOI2009]Count
- 6-2 多态性与虚函数
- 【web】《javascript语言精粹》笔记(一)
- iPhoneX截图如何带“刘海”和圆角
- 蜘蛛不爬取,您检查过网站的robots了么
- bubble sort详解
- JAVA删除字符串中指定字符集(删除敏感字符)
- iOS App的整个生命周期
- c++中string类的基本实现
- CodeForces 26 C.Parquet(构造)
- 做百度知道营销不可忽视的问题
- 51nod 1318 最大公约数与最小公倍数方程组 2-SAT+数学
- Android NDK开发扫盲及最新CMake的编译使用
- 单片机实验四