双向冒泡排序
来源:互联网 发布:网络舆情应急预案 编辑:程序博客网 时间:2024/05/16 14:19
双向冒泡排序
突发奇想,无聊,无意中看到了冒泡排序,顺手写下了下面一段代码,实现了单向冒泡排序和双向冒泡排序。
#include <iostream>#include <algorithm>using namespace std ;int data[128] ;int dataNum = 0 ;//单项冒泡排序void bubbleSortData(int* data, int num){if (data == NULL || num <= 0) return ;int right = num - 1 ;while (right > 0){int tmpRight = 0 ;for (int i = 0; i < right; ++ i)if (data[i] > data[i + 1]){swap(data[i], data[i + 1]) ;tmpRight = i ;}right = tmpRight ;}}//双向冒泡排序void doubleBubbleSort(int *data, int num ){if (data == NULL || num <= 0) return ;int left = 0; int right = num - 1 ;int tmp = 0 ;while (left < right){//更新righttmp = left ;for (int i = left; i < right; ++ i)if (data[i] > data[i + 1]){swap(data[i], data[i + 1]) ;tmp = i + 1 ;}right = tmp ;//更新lefttmp = right ;for (int i = right; i > left; -- i)if (data[i] < data[i - 1]){swap(data[i], data[i -1]) ;tmp = i - 1 ;}left = tmp ;}}void printData(const int *data, const int num){for (int i = 0; i < num; ++ i)cout << data[i] << " ";cout << endl;}int main( int argc, char** argv){int tmp ;while (cin >> tmp) //输入一个非数字的字符表示结束data[dataNum++] = tmp ;printData(data, dataNum) ;doubleBubbleSort(data, dataNum) ;cout << "排序之后的结果" << endl;printData(data, dataNum) ;return 0 ;}
0 0
- 双向冒泡排序法
- 双向冒泡排序法
- 双向冒泡排序算法
- 双向冒泡排序
- 双向冒泡排序
- 双向冒泡排序
- 双向冒泡排序
- java 双向冒泡排序
- 双向冒泡排序
- 冒泡双向排序
- 双向冒泡排序
- 双向冒泡排序
- 双向冒泡排序
- 双向冒泡排序
- 双向冒泡排序
- 双向冒泡排序
- 双向冒泡排序
- 双向冒泡排序
- 全自动pdf转word转换器独家发布
- 岁月号沉没:大型灾难考验国家伦理
- LeetCode: Edit Distance
- BZOJ 1010 单调队列优化dp
- android对话框(Dialog)的用法
- 双向冒泡排序
- 如何解决安卓SDK无法下载Package的问题
- java实现栈(数组和链表两种实现方式)
- nyoj 115 城市平乱
- 专家解析:程序员到软件架构师培训与认证之路
- 蛇形数组
- mysql5.1 event概念
- ZOJ Problem Set - 1095 丑数
- 多玩英雄联盟插件盒子v3.8.0