数据结构——改进的冒泡排序(c++)

来源:互联网 发布:linux运维和java开发 编辑:程序博客网 时间:2024/06/15 02:17

ImprovedBubbleSorter.h

//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);}

这里写图片描述

0 0
原创粉丝点击