C++ Exercises(七)

简介:
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;

template <typename T>
void deSelSort(T arr[],int n)
{//双端选择排序
    int min,max;
    for (int i=0,j=n-1;i<j;++i,--j)
    {
        min = i;
        max = j;
        if (arr[min]>arr[max])
        {//确保两个端点处有序
            MySwap(arr[min],arr[max]);
        }
        for (int m=i+1;m<j;++m)
        {
            if (arr[m]>arr[max])
            {
                max = m;
            }
            else if(arr[m]<arr[min])
            {
                min = m;
            }
        }
        //交换最小值和最大值到合适的位置
        MySwap(arr[min],arr[i]);
        MySwap(arr[max],arr[j]);
    }

}
template <typename T>
void bubbleSort(T arr[] ,int n)
{//冒泡排序
    bool isSwaped;
    for (int i=n-1;i>=1;--i)
    {
        isSwaped = false;
        for (int j=0;j<=i;++j)
        {
            if (arr[j]>arr[j+1])
            {
                isSwaped = true;
                MySwap(arr[j],arr[j+1]);
                
            }
        }
        if (isSwaped==false)
        {//没有交换,停止排序
            break;
        }
    }
}
template <typename T>
void MySwap(T& a,T& b)
{//交换两个值
    T temp;
    temp = a;
    a = b;
    b = temp;
}
template<typename T>
void printArray(T arr[],int n)
{//输出列表
    for (int i=0;i<n;++i)
    {
        cout<<arr[i]<<'\t';
    }
    cout<<endl;
}
bool isPal(const string& str,int start,int end)
{//判断是否是回文
    if (start>=end-1)
    {
        return true;
    }
    else if (str[start]!=str[end-1])
    {
        return false;
    }
    else
        return isPal(str,start+1,end-1);
}
void dec2bin(int n,int length)
{//输出整数n为固定长度length的进制数字
    if (length==1)
    {
        cout<<"0";
        return;
    }
    dec2bin(n/2,length-1);
    cout<<n%2;

}
template<typename T>
void generateArray(T arr[],int n)
{//产生随即数数组

    srand((unsigned)time(NULL));
    for (int i=0;i<n;++i)
    {
        arr[i] = rand()%1000;
    }
}
int main(void)
{
    int a[] = {8,7,6,5,4,3,2,1};
    cout<<"排序前:";
    printArray(a,8);
    deSelSort(a,8);
    //bubbleSort(a,8);
    cout<<"排序后:";
    printArray(a,8);
    string str;
    cout<<"是否是回文";
    cin>>str;
    cout<<isPal(str,0,str.length())<<endl;
    int num,len;
    cout<<"输入数:";
    cin>>num>>len;
    dec2bin(num,len);
    cout<<"产生随机数数组:"<<endl;
    int b[10];
    generateArray(b,10);
    bubbleSort(b,10);
    printArray(b,10);
    return 0;
}


本文转自Phinecos(洞庭散人)博客园博客,原文链接http://www.cnblogs.com/phinecos/archive/2007/12/21/1008927.html,如需转载请自行联系原作者
目录
相关文章