博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ Exercises(七)
阅读量:6496 次
发布时间:2019-06-24

本文共 1880 字,大约阅读时间需要 6 分钟。

#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,如需转载请自行联系原作者
你可能感兴趣的文章
android实现图片识别的几种方法
查看>>
bzoj1030[JSOI2007]文本生成器
查看>>
mvc学习地址
查看>>
masonry 基本用法
查看>>
使用openssl创建自签名证书及部署到IIS教程
查看>>
Word产品需求文档,已经过时了【转】
查看>>
dtoj#4299. 图(graph)
查看>>
关于网站的一些js和css常见问题的记录
查看>>
zabbix-3.4 触发器
查看>>
换用代理IP的Webbrowser方法
查看>>
【视频编解码·学习笔记】7. 熵编码算法:基础知识 & 哈夫曼编码
查看>>
spark集群安装部署
查看>>
为什么CPU需要时钟这种概念?
查看>>
CMD安装/删除服务
查看>>
Strum—Lioville问题
查看>>
微服务Kong(十)——负载均衡参考
查看>>
ORACLE 12C PDB 维护基础介绍
查看>>
遍历Map集合的方法
查看>>
使用pentaho工具将数据库数据导入导出为Excel
查看>>
spring boot -thymeleaf-url
查看>>