数据结构——改进的冒泡排序(c++)
2015-06-21 20:32
447 查看
ImprovedBubbleSorter.h
Sorter.h
ImprovedBubbleSort.cpp
//ImprovedBubbleSorter.h //优化的起泡排序类 #include "Sorter.h" template <class Record> class ImprovedBubbleSorter:public Sorter<Record> { public: void Sort(Record Array[],int n); }; //优化的起泡排序,Array[]为待排序数组,n为数组长度 template <class Record> void ImprovedBubbleSorter<Record>::Sort(Record Array[], int n) { bool NoSwap; int i,j; for(i=0;i<n-1;i++) { NoSwap=true; for(j=n-1;j>i;j--) { if(Array[j]<Array[j-1]) { swap(Array,j,j-1); NoSwap=false; } } if(NoSwap) return ; } }
Sorter.h
//Sorter.h #if !defined(AFX_Sorter) #define AFX_Sorter //总排序类 template <class Record> class Sorter{ protected: static void swap(Record Array[],int i,int j); //交换数组中的两个记录 public: virtual void Sort(Record Array[],int n)=0; //对数组Array进行排序 void PrintArray(Record array[], int n); //输出数组内容 }; //交换数组中的两个记录 template <class Record> void Sorter<Record>::swap(Record Array[],int i,int j) { Record TempRecord = Array[i]; Array[i] = Array[j]; Array[j] = TempRecord; } //输出数组内容 template <class Record> void Sorter<Record>::PrintArray(Record Array[], int n) { for(int i=0;i<n;i++) cout<<Array[i]<<" "; cout<<endl; } #endif
ImprovedBubbleSort.cpp
//ImprovedBubbleSort.cpp //优化的起泡排序 #include <iostream.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "ImprovedBubbleSorter.h" const int N=1000; // 设定随即函数的种子 inline void Randomize() { srand(1); } //返回一个0到n-1之间的随机数 inline int Random(int n) { return rand() % (n); } void main() { ImprovedBubbleSorter<int> s; int Array[8]; for(int i=0;i<8;i++) { Array[i]=Random(10); } s.Sort(Array,8); s.PrintArray(Array,8); }
相关文章推荐
- 数据结构——希尔排序(c++)
- 数据结构——直接选择排序(c++)
- 数据结构——直接插入排序(c++)
- 数据结构——二叉树2(c++)
- 词典的实现(3)--使用JAVA类库ArrayList实现Map数据结构
- 数据结构——二叉树1(c++)
- Java数据结构系列——简单排序:泡、选择、直接进入
- 数据结构基础
- 二叉树学习笔记 分类: C/C++ 数据结构与算法 2015-06-21 12:00 36人阅读 评论(0) 收藏
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历 分类: 树 2015-06-21 11:02 8人阅读 评论(0) 收藏
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历 分类: 树 2015-06-21 10:58 11人阅读 评论(0) 收藏
- [数据结构]八皇后(暴力,解答树,DFS回溯)
- 二叉树的三种遍历方式:递归、栈、循环 分类: C/C++ 数据结构与算法 2015-06-21 09:47 269人阅读 评论(0) 收藏
- JAVA 常用数据结构操作
- 数据结构和算法-010 数组排序 希儿排序
- [数据结构]埃及分数(暴力,解答树,迭代加深搜索)
- [数据结构]二叉树自学
- 线性表子系统