排序算法:冒泡排序(带标记)
来源:互联网 发布:我的世界linux启动器 编辑:程序博客网 时间:2024/06/06 00:30
查找排序算法时,找到一个种带标记的冒泡排序算法,它的优势是对于后部已经排好序的的数列,节省了继续向后比较的操作。
带标记的冒泡排序算法:在一次排序中,标记出最后一次进行交换元素的位置,在下次排序中,只需要比较到这个标记位置,因为后面的元素已经排好序。
C++实现
#include <iostream>#include <vector>using namespace std;template<typename T> void BubbleSort(vector<T> &vec);int main(){int arr[] = {8, 3, 10, 49, 2, 6, 13, 5, 14, 7, 51, 53, 55};vector<int> vec(&arr[0], &arr[13]);BubbleSort(vec);return 0;}template<typename T>void BubbleSort(vector<T> &vec){int VSize = vec.size();if (VSize < 1)return;if (1 == VSize){cout << "Only one element in array: " << vec[0] << endl;return;}int pos = VSize - 1;for (int vIdx = 0; vIdx < VSize-1; vIdx++){//for (int uIdx = 0; uIdx < (VSize - vIdx - 1); uIdx++)int newPos = 0;for (int uIdx = 0; uIdx < pos; uIdx++) // pos{if (vec[uIdx] > vec[uIdx + 1]){vec[uIdx] ^= vec[uIdx + 1];vec[uIdx + 1] ^= vec[uIdx];vec[uIdx] ^= vec[uIdx + 1];newPos = uIdx + 1;}}}for (int vIdx = 0; vIdx < VSize; vIdx++){cout << "value in " << vIdx << " is " << vec[vIdx] << endl;}return;}
0 0
- 排序算法:冒泡排序(带标记)
- 排序:冒泡排序(算法)
- 冒泡排序(排序算法--比较排序)
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法 冒泡排序
- 排序算法-- 冒泡排序
- 排序算法-冒泡排序
- 排序算法---冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 通过setAllowNonStringKeys解决java.lang.ClassCastException: JSON keys must be strings
- idea android studio 删除项目中的 svn 信息, disconnect 下载
- Spark RPC之RpcResponse处理
- Java 序列化
- 如何清理chrome浏览器的js缓存
- 排序算法:冒泡排序(带标记)
- [C++]函数后面加const修饰
- Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨
- 简单使用URLConnection、HttpURLConnection和HttpClient访问网络资源
- wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)
- java再复习-常用线程池
- 采用stack实现的文件夹循环深度优先遍历的基类
- Maven基础学习—Maven入门
- CodeForces #307 Div.2 B. ZgukistringZ