
程序人生
挺的博客
这个作者很懒,什么都没留下…
展开
-
快速排序(C语言版一)
//快速排序 #include <iostream>using namespace std;void quickSort(int *arr,int length);void sortProcess(int *arr,int L,int R);int *partition(int *arr,int L,int R);void swap(int *arr,int i,int ...原创 2019-05-02 09:46:39 · 206 阅读 · 0 评论 -
给定一个任意大小的数组,将所有的0放在后面,其他的数字顺序保持不变。
给定一个任意大小的数组,将所有的0放在后面,其他的数字顺序保持不变。例,数组{1,3,0,3,6,0,0,9},输出为{1,3,3,6,9,0,0,0}。程序如下:#include<stdio.h>void swap(int *a,int *b);void conver(int*arr,int length);int main(){ int arr[8]={1,3,...原创 2019-08-20 10:53:25 · 992 阅读 · 0 评论 -
判断两个字符是否异位
判断两个字符是否异位?例如,abcdef和badcfe, 或abcde和badce。程序如下:#include<stdio.h>#include<string.h>void judge(char* arr1,char* arr2,int length1,int length2);int main(){ char arr1[20]; char arr2[...原创 2019-08-20 11:41:15 · 949 阅读 · 0 评论 -
C语言 二分查找(递归实现)
二分查找(递归实现):#include<stdio.h>int fun(int *arr,int start,int end,int val){ int mid=(start+end)/2; if(start<end) { if(arr[mid]==val) return mid; else if(arr[mid]>val) retu...原创 2019-08-16 20:42:43 · 1733 阅读 · 2 评论 -
C语言 二分查找(循环实现)
二分查找(循环实现):#include<stdio.h>int main(){ int arr[10]={1,3,4,5,8,9,10,15,26,30}; int val=20; int left=0; bool flag=1; int mid; int right=sizeof(arr)/sizeof(arr[0])-1; while(left<ri...原创 2019-08-16 22:48:28 · 820 阅读 · 0 评论 -
快速排序(C语言版二)
快速排序:#include<stdio.h>void quicksort(int * arr, int left,int right);void swap(int *a,int *b);int main(){ int arr[10]={2,6,3,9,5,2,0,23,12,1}; int length=sizeof(arr)/sizeof(arr[0]); qu...原创 2019-08-17 10:48:16 · 186 阅读 · 0 评论 -
直接插入排序(C语言版)
直接插入排序:#include<stdio.h>void swap(int *a,int *b);int main(){ int a[11]={10,4,7,3,9,2,4,6,8,2,3}; int i,j; int length=sizeof(a)/sizeof(a[0]); for(i=1;i<length;i++) { for(j=i-1;j&g...原创 2019-08-18 09:56:17 · 172 阅读 · 1 评论 -
输入字符串的全排列
方法一:复杂问题分解为小问题:第一步:求所有可能出现在第一个位置的字符。第二步:固定第一个字符,求后面所有字符的排列。#include<stdio.h>#include<string.h>void swap(char *a,char *b){ char temp; temp=*a; *a=*b; *b=temp;}void solution(...原创 2019-09-04 12:43:47 · 364 阅读 · 0 评论 -
求最长递增子序列的长度
输入格式:输入有两行: 第一行:n,代表要输入的数列的个数 第二行:n个数,数字之间用空格格开输出格式:最长单调递增子序列的长度输入样例:在这里给出一组输入。例如:51 3 5 2 9输出样例:在这里给出相应的输出。例如:4#include<stdio.h>#include<malloc.h>int solution(int a[],...原创 2019-09-04 21:00:28 · 403 阅读 · 0 评论 -
冒泡排序、简单选择排序、直接插入排序
#include<stdio.h>#define insertSortFlag 0#define direcSelectSortFlag 0#define bubbleSort 1int main(){ int num[10]={3,6,4,2,5,1,1,2,0,8}; int length=sizeof(num)/sizeof(num[0]); int t...原创 2019-09-07 00:03:18 · 216 阅读 · 0 评论 -
单链表的反转
方法一:迭代法:ListNode * Reverse(ListNode *head){ if(head == NULL) return NULL; ListNode *pNode=head; ListNode *pNew=NULL; while(pNode!=NULL) { ListNode *temp=pNode-...原创 2019-09-08 15:38:34 · 155 阅读 · 0 评论 -
判断输入的IP地址是否合法
方法一(比较复杂):#include<stdio.h>#include<string.h>int main(){ char arr[20]; int i=0,count=0; bool flag=1; scanf("%s",&arr); if(strlen(arr)>13 || (arr[3]!='.') || (arr[7]!='....原创 2019-08-18 17:33:42 · 1567 阅读 · 0 评论 -
二进制与十进制的相互转换
二进制转十进制程序如下:思路:判断二进制的每一位是否为“1”,若是“1”,加上该位对应的2的倍数。#include<stdio.h>int main(){ long num,a=10,b=1,add=0; printf("输入的二进制数为:"); scanf("%d",&num); while(num!=0) { add=add+(num%a ? b...原创 2019-08-18 16:42:28 · 230 阅读 · 0 评论 -
二维数组行列数的计算
定义数组为intarray[A][B];sizeof(array[0][0])为一个元素占用的空间,sizeof(array[0])为一行元素占用的空间,sizeof(array)为整个数组占用的空间,那么:行数 = sizeof(array)/sizeof(array[0]);列数 = sizeof(array[0])/sizeof(array[0][0]);...原创 2019-07-22 20:56:05 · 1829 阅读 · 0 评论 -
归并排序(C语言版)
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之:代码一://归并排序#include "stdio.h"#include <stdli...原创 2019-05-02 09:45:17 · 3750 阅读 · 0 评论 -
一段英文中,检测英文单词出现最多的四个,并统计个数
#include "stdio.h"#include "string.h"int main(void){ int length=0; int i=0,j=1,k=0,L=0; int number=1; int kongge[500]; int count[100]={0}; int count1[100]={0}; int te...原创 2018-11-15 15:25:46 · 425 阅读 · 0 评论 -
利用数组下标,将n以内的数进行排序
巧用数组下标数组的下标是一个隐含的很有用的数组,特别是在统计一些数字,或者判断一些整型数是否出现过的时候。例如,给你一串字母,让你判断这些字母出现的次数时,我们就可以把这些字母作为下标,在遍历的时候,如果字母a遍历到,则arr[a]就可以加1了,即 arr[a]++;/****************************************功能:将n以内的数进行排序时间: ...原创 2018-10-31 09:47:57 · 1332 阅读 · 0 评论 -
将16进制转化为字符串
//功能:将16进制转换成字符串//时间:2018年9月13日#include "stdio.h"#include "string.h"char data[5]={0x12,0xfe,0x5b};char input[10];int main(void){ int i, b,c; int j=0; for(i=0;i<strlen(data);i...原创 2018-09-23 11:00:29 · 3186 阅读 · 1 评论 -
直接插入排序(C语言版)
直接插入排序基本思想:每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。程序如下:#include<iostream>#include<vector>using namespace std;int main(void){ int arr[]={5,4,1,3,8,6,3}; int length=sizeof(ar...原创 2019-05-15 10:04:38 · 282 阅读 · 0 评论 -
static关键字详解
static的作用:1、在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变;2、在模块内(但在函数体外),一个被表明为静态的变量可以被模块内所用函数访问,但不能被模块外其他函数访问。它是一个本地的局部变量;3、在模块内,一个被声明为静态的函数只可被这一模块内的其他函数调用。也就是,这个函数被限制在声明它的模块的本地范围内使用。一. 面向过程程序设计1、静态全局变...转载 2019-05-16 09:46:56 · 348 阅读 · 0 评论 -
什么是红黑树?
什么是红黑树?————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:2.由于10 > 9,因...转载 2019-05-30 14:45:05 · 107 阅读 · 0 评论 -
比较两棵树,是否相等?
数据结构如下:typedef struct TreeNode{ char c; TreeNode *leftchild; TreeNode *rightchild;}程序如下:int compTree(TreeNode *Tree1,TreeNode *Tree2){ if((Tree1==NULL) != (Tree2==NULL...原创 2019-07-21 10:53:21 · 619 阅读 · 0 评论 -
输出数组中重复的数字
void fun(int number[], int length){ if(number == NULL || length <= 0) printf("error"); if(length < 0 || length > n-1) printf("error"); for(int i=0; i < length...原创 2019-07-21 23:23:18 · 884 阅读 · 0 评论 -
二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。bool find(int a[], int num){ int hang=sizeof(a)/sizeof(a[0]); int lie=sizeof(a[0])/sizeof(a...原创 2019-07-22 20:49:29 · 108 阅读 · 0 评论 -
strstr函数实现
strstr()函数用来查找子串的首地址,函数实现如下:char* strstr(char * str1,char * str2){ char *p1=NULL; char *p2=NULL; while(*str1) { p1=str1; p2=str2; while(*p1==*p2 && *p2!=NULL) { p1++; p2...原创 2019-09-12 10:32:44 · 832 阅读 · 0 评论