自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风雪傲月的博客

点点滴滴的积累

  • 博客(48)
  • 收藏
  • 关注

原创 循环有序数组的查找

//有一个循环有序数组A,如何从这样的数组中寻找一个特定的元素呢?利用折半查找的思想#includeusing namespace std;int search(int data[],int low,int high,int key){ while(low<=high) { int mid=(high+low)/2; if(key==data[mid]) return m

2015-07-16 22:14:26 301

原创 折半查找

//折半查找又称为二分查找,仅适用于事先已经排好序的顺序表。其查找的基本思想是:首先将给定值key与表中中间位置的关键字进行比较,若//相等,则查找成功,返回该元素的存储位置;若不等,则所需查找的元素只能在中间数据以外的前半部分或后半部分中。然后在缩小的范围内//继续进行同样的查找,如此重复直到找到为止。算法如下:#includeusing namespace std;int Binar

2015-07-16 21:44:25 359

原创 原路归并排序

//原地归并排序不需要辅助数组即可归并。关键在于merge这个函数。#includeusing namespace std;void reverse(int *data,int n){ for(int i=0;i<n/2;i++) { swap(data[i],data[n-i-1]); }}//将含有n个元素的E数组向左循环移位i个位置void exchange(in

2015-07-11 17:42:08 667

原创 将数组b合并到数组a中

//给定两个有序数组a和b,已知数组a末尾还有足够的空间容纳b,写一个函数将数组b合并到数组a中。//n:数组a中的元素个数//m:数组b中的元素个数#includeusing namespace std;void merge(int a[],int b[],int n,int m){ int k=n+m-1; int i=n-1; int j=m-1; while(i>=0&

2015-07-10 16:47:14 1052

原创 合并两个排好序的链表

//合并两个有序的链表,使用递归和非递归的思想#includeusing namespace std;struct ListNode{ int m_nValue; ListNode* m_pNext;};ListNode* CreateListNode(int value){ ListNode* pNode = new ListNode(); pNode->m_n

2015-07-10 16:19:50 411

原创 二路归并排序及数组中逆序对的计算

//二路归并排序,并计算逆序对的个数.二路归并排序算法的性能分析:空间复杂度为O(n),时间复杂度为O(nlog2n),具有稳定性#includeusing namespace std;int count=0;//计算数组中逆序对的个数//设两段有序表data[low...mid]、data[mid+1...high]存放在同一顺序表中相邻的位置上,先将他们复制到辅助数组b中。每次从对应

2015-07-10 10:28:07 559

原创 一个数组中存储有且仅有大写和小写字母,编写一个函数对数组内的字母重新排列,让小写字母在所有大写字母之前

//一个数组中存储有且仅有大写和小写字母,编写一个函数对数组内的字母重新排列,让小写字母在所有大写字母之前#includeusing namespace std;void Partition(char *a,int low,int high){ if(a==NULL||low>=high||low<0||high<0) return; while(low<high) { wh

2015-07-09 22:50:59 1070

原创 冒泡排序

冒泡排序的思想是:假设待排序表长为n,从前往后(或从后往前)两两比较相邻元素的值。其空间复杂度为O(1),时间复杂度为O(n^2),具有稳定性,每一趟排序都会将一个元素放到其最终的位置上#includeusing namespace std;void BubbleSort(int *data,int len){ if(data==NULL||len<=0) return;

2015-07-09 22:48:22 234

原创 快速排序

快速排序的思想史基于分治的,其是递归的,需要 借助一个递归栈来保存每一层递归调用的必要信息,所以其空间复杂度为O(log2n),时间复杂度为O(nlog2n),快速排序是所有内部排序算法中平均性能最优的排序算法#include#includeusing namespace std;int RandomInRange(int start,int end){ srand(time

2015-07-09 22:43:51 286

原创 希尔排序

希尔排序的而思想是:先将待排序表分割成若干形如L[i,i+d,i+2d,...i+kd]的特殊子表,分别进行插入排序,当整个表中元素基本有序时,再对全体记录进行一次直接插入排序。//d:增量其空间复杂度为O(1),时间复杂度为O(n^1.3)#includeusing namespace std;void swap(int *a,int *b){ int c=*a;

2015-07-09 22:32:30 184

原创 选择排序

选择排序的思想是:每一趟在后面n-i+1个待排元素中选取关键字最小的元素,作为有序子序列的第i个元素。每排一次就可以确定一个元素的位置,其空间复杂度为O(1),时间复杂度为O(n^2),是一个不稳定的排序算法。#includeusing namespace std;void SelectSort(int *data,int len){ if(data==NULL||len<=0)

2015-07-09 22:31:19 184

原创 插入排序

插入排序是一直最直接的排序方法,其基本思想在于每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中,知道全部记录查完为止。其时间复杂度为O(n^2),空间复杂度为O(1).具有稳定性#includeusing namespace std;void InsertSort(int *data,int len){ if(data==NULL||len<=0)

2015-07-09 22:25:14 250

原创 堆排序

#includeusing namespace std;//array是待调整的堆数组,i是待调整的数组元素的位置,nlength是数组的长度//本函数功能是:根据数组array构建大根堆void HeapAdjust(int data[],int i,int len){ //子结点的位置=2*(父结点位置)+1 int nchild; for(;2*i+1<len;i=nchi

2015-07-09 22:20:32 211

原创 用堆排序的思想求最小的k个数,处理海量数据

//最小的k个数//输入n个整数,输出其中最小的k个数//解答:虽然利用快排的思想很好的解决了问题,但是也有限制,首先我们需要一次性读入所以的数据,其次,需要修改输入的数组//利用堆排序来解决此问题,此种方法适合处理海量数据//首先我们先读入k个元素创建一个大小为k的大根堆,然后我们依次读入剩下的数据,如果当前数据比大根堆的堆顶小,则用这个数代替当前//堆顶,并调整堆使其

2015-07-09 22:11:50 760 1

原创 判断IP地址的合法性

//现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数//(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。//现在需要你用程序来判断IP是否合法。#includeusing namespace std;bo

2015-07-09 11:37:59 1275

原创 等差数列

//等差数列//功能:等差数列 2,5,8,11,14。。。。//输入:正整数N >0//输出:求等差数列前N项和//返回:转换成功返回 0 ,非法输入与异常返回-1#includeusing namespace std;bool getResult(int n){ if(n  return -2; int a=2; int b=a; f

2015-07-09 11:36:26 355

原创 输入整型数组和排序标识,对其元素按照升序或降序进行排序

//输入整型数组和排序标识,对其元素按照升序或降序进行排序#include#includeusing namespace std;int cmp0(int x,int y){ return x>y;}int cmp1(int x,int y){ return x}void sortIntegerArray(int* pIntegerArray

2015-07-09 11:35:16 781

原创 如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

//如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。//实现以下接口://输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)//按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出//清空目前的统计结果,重新统计//调用者会保证://输入的字符串以‘\0’结尾。

2015-07-09 11:32:48 2541

原创 从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值

//从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值#include#include#includeusing namespace std;void getResult(vector& data,int len){ if(data.size()==0||len  return; int count=0; double avg=0.0;

2015-07-09 11:31:39 5753

原创 字符串的翻转

//将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。#includeusing namespace std;void reverse(char *pBegin,char* pEnd){ if(pBegin==NULL||pEnd==NULL)  return;

2015-07-09 11:30:58 287

原创 找出给定字符在字符串中出现的次数

//写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写#includeusing namespace std;void getResult(char *str,char s){ if(str==NULL||s==NULL)  return; int len=strlen(str); int

2015-07-09 11:29:09 1124

原创 字符串的分割

//连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;//长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。#includeusing namespace std;void getResult(char *str){ if(str==NULL)  return; while(1) {  if(strlen(str)  {

2015-07-09 11:27:14 216

原创 将一个十六进制的字符串转化为一个十进制的字符串

//写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串#includeusing namespace std;void getresult(char *str){ if(str==NULL)  return ; int sum=0; int quan=1; int len=strlen(str); for(int i=len-1;i

2015-07-09 11:26:19 340

原创 求一个整数四舍五入后的结果,该整数可以是正数负数

//写出一个程序,接受一个浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。#includeusing namespace std;void interge(float num){ int flag=0; if(num {  flag=1;  num=-num; } int n=(int)num; f

2015-07-09 09:41:59 562

原创 数字的颠倒

#includeusing namespace std;void  reverse(int num){ if(num  return ; int temp; int i=0; char str[200]; if(num==0)  cout while(num) {  temp=num%10;  str[i]=temp+'0';  

2015-07-09 09:39:59 378

原创 编写程序时关于字符串时的一些主要函数

1.string其支持长度可变的字符串,是一个标准的库,在使用时需要加#include头文件,可用getline函数读取整行文本,亦可用cin读取一个以空白字符分割的字符串(1)getline函数:接受两个参数,一个输入流对象和一个string对象;它从输入流的下一行读取,并保存读取的内容到string中,但不包括换行符;但是getline函数并不忽略行开头的换行符,所以在使用此函数时,如

2015-07-08 21:09:14 410

原创 图片整理

//Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。//请大家给Lily帮忙,通过C语言解决。#include#include#includeusing namespace std;void getResult(char* s){ int len=strlen(s); if(len10

2015-07-08 21:06:33 255

原创 输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。

//输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。#includeusing namespace std;int getResult(int n){ if(n==0)  return -1; int count=0; char str[100]; int i=0; while(

2015-07-08 21:05:47 908

原创 求整数的Root:给定正整数,求每位数字之和;如果和不是一位数,则重复

//求整数的Root:给定正整数,求每位数字之和;如果和不是一位数,则重复//用递归求解数字基#includeusing namespace std;int sumnums(int n){ if(n  return n; int sum=0; while(n) {  sum+=n%10;  n/=10; } return sumnum

2015-07-08 21:04:32 267

原创 判断我国公民的身份证是否合法

//我国公民的身份证号码特点如下: //1、     长度为18位;//2、     第1~17位只能为数字;//3、     第18位可以是数字或者小写英文字母x。//4、     身份证号码的第7~14位表示持有人生日的年、月、日信息。//例如:511002198808080111或51100219880808011x。//请实现身份证号码合法性判断的函数。除满

2015-07-08 21:02:22 622

原创 出牌,用程序判断手中的牌是否能够压过对方出牌

//规则:出牌牌型有5种   //牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。 //[1]一张 如4 则5...9可压过 //[2]两张 如44 则55,66,77,...,99可压过 //[3]三张 如444 规则如[2] //[4]四张 如4444 规则如[2] //[5]五张 牌型只有12345 23456 345

2015-07-08 20:58:57 2450

原创 判断输入的文本是英文还是德文

//输入包括多个行数,首先给出整数N(1#includeusing namespace std;void main(){ int n; cin>>n; if(n10000)  return ; char str[100];  int num_s=0; int num_t=0; gets(str); while(n) {  in

2015-07-08 20:56:18 1527

原创 if语句中括号的匹配

编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。输入:if((a==1)&&(b==1))输出:RIGTH 3 3输入:i

2015-07-08 20:55:29 1929

原创 挑7

//相关数:判断比整数N小的数里,有多少个与7相关的数(比如7、14、17、27)。只需要给出总的个数,不需要输出。(挑7)#includeusing namespace std;bool Is7(int n){ while(n) {  if(n%10==7)   return true;  n/=10; } return false;}

2015-07-08 20:54:08 219

原创 如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置

//如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到//output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,//依次存放剩下的数。#include#includeusing namespace std;void get

2015-07-08 20:51:59 661

原创 名字的漂亮度

//名字的漂亮度,首先将名字中的大写全部改为小写,再计算每个字符出现的次数,存储在数组中,然后将改数组升序排序//给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。//每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。//给出多个名字,计算每个名字最大可能的“漂亮度”。//名字

2015-07-08 20:50:19 1626

原创 输入一段英文文本,用程序统计出现频率最高和最低的两个单词;

//输入一段英文文本,用程序统计出现频率最高和最低的两个单词;//英文文本中仅出现这四类字符:空格( )、英文逗号(,)、英文句号(.)、英文大小写字母(a-z、A-Z)//单词之间的分隔符仅考虑这三种:空格( )、英文逗号(,)、英文句号(.);//仅大小写不同的单词算同一个单词;//如果两个单词出现次数相同,则在文本中首次出现的单词优先返回。//返回的单词统一用小写

2015-07-08 20:48:50 3803

原创 在给定字符串中找出单词

//在给定字符串中找出单词(“单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等;//另外单个字母不算单词);找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),//然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串。//输出的单词之间使用一个“空

2015-07-08 20:47:08 3207

原创 将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;

//将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;//若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;//当连续相同字母超过两个时,第三个出现的字母按第一次出现算。#includeusing namespace std;voi

2015-07-08 20:45:53 3770

原创 字符串的压缩

//通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。//压缩规则://1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".//2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"

2015-07-08 20:44:44 328

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除