C++版本的冒泡排序
来源:互联网 发布:商家淘宝客推广 编辑:程序博客网 时间:2024/05/29 17:55
#include <iostream>using namespace std;#define MAXSIZE 100typedef int Status;#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0template <typename T>class SqList{public: T r[MAXSIZE+1]; int length;public: SqList(T * var,int len); SqList(); void printList(); void BubbleSort(); Status swapElement(int i, int j);};template <typename T>SqList<T>::SqList(T * var,int len){ length = len/sizeof(T); memcpy(&(r[1]), var, len);}template <typename T>SqList<T>::SqList(){ memset(this, 0, sizeof(SqList));}template <typename T>Status SqList<T>::swapElement(int i,int j){ T tmp =this->r[i]; this->r[i] = this->r[j]; this->r[j] = tmp; return OK;}template <typename T>void SqList<T>::printList(){ for (int i = 1; i <= length; i++) { cout << this->r[i] << "\t"; } cout << endl;}/************************************************************************//* 1.升序,将小元素排到前面 *//************************************************************************//*相邻元素两两比较,如果存在反序则交换位置**一共需要n-1趟循环,外层循环是【1...n-1】**每趟循环能够把最小的元素冒泡到第一个元素**第i趟循环需要比较n-i次,内层循环是【n-1...i】*/template <typename T>void SqList<T>::BubbleSort(){ int i=0, j=0; Status flag = TRUE;//用flag辅助循环结束的条件,优化冒泡排序算法。 for (i = 1; i < this->length && flag;i++)//跑多少趟 { flag = FALSE;//每一趟进来默认表示不用进行下一趟比较了(进行该轮比较以后即可排序完毕) for (j = this->length - 1; j >= i; j--)//每一趟比较无序序列的两两相邻的元素 { if (this->r[j + 1] < this->r[j])//后一个元素比较小的话,交换位置 { swapElement(j, j + 1);//小元素往上浮动 flag = TRUE;//发生数据交换(表示没有排好)以后还需要进行下一趟排序 } } }}int main(void){ int myList[9] = {90,10,50,80,30,70,40,60,20}; SqList<int> list(myList,sizeof(myList)); cout << "before sort:"<< endl; list.printList(); list.BubbleSort(); cout << "after sort:" << endl; list.printList(); cout<<"Hello!"<<endl; system("pause"); return 0;}
0 0
- C++版本的冒泡排序
- C 冒泡排序 冒泡排序的优化
- 冒泡排序(C语言版本)
- C语言的冒泡排序
- C语言的冒泡排序
- C语言的冒泡排序
- c语言的冒泡排序
- c 语言的 冒泡排序
- c语言版本的冒泡法
- c语言的经典算法-冒泡排序
- 优化的冒泡排序C代码
- 冒泡排序算法的c语言实现
- 冒泡排序的C语言代码
- 冒泡排序算法的C/C++ 实现
- 冒泡排序的C语言实现
- 纯C语言写的冒泡排序
- C语言的冒泡排序法改进
- iOS中C语言的冒泡排序
- Git命令“从入门到放弃”
- 算法分析与设计-10- 最大子段和的动态规划算法
- 【数据结构】顺序表与链式实现队列并测试
- AOP例子
- Ubuntu15.10安装Kali Linux渗透工具
- C++版本的冒泡排序
- Java设计两个矩阵相乘的方法
- Android 简单的ImageLoader实现
- 【NOIP2001】一元三次方程求解
- 算法分析与设计-11-最长递增子序列的动态规划算法
- 1006. 换个格式输出整数 (15)
- inux 进程2 --- 进程的创建及相关api
- POJ 1308 并查集
- Android直接复制使用的工具类