#include<stdio.h> void simpleArray(); void main() { simpleArray(); } //数组的简单操作 void simpleArray() { //数组的声明并赋值 int c[5] = { 1, 2, 3, 4, 5 }; printf("\nC数组内存中占%d个字节",sizeof(c));// /0在内存中会占一个字节,可是仅仅针对于字符串 printf("\nC数组中有%d个元素",size…
#include <stdio.h>#include <stdlib.h> void randomlize(int *a, int n){        int i = 0,j = 0, k = 0;        for(i = 0; i < n; i++)            {                j = rand()%(n-i)+i;                k = a[i];                a[i] = a[j];         …
package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Demo16 { /* * 插入数组中一个数,仍能排序 */ public static void main(String[] args) { int []arr={100,70,50,30,10,0}; int []bb=new int[arr.length+1]; System.out.print("请输入你要插入的数字:…
像uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};和uchar ds1302[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};都能运行,两者有什么区别   C在定义数组时是占用内存空间的,而code是编码的意思,在定义编码时是直接分配到程序空间的,编译后编码占用的事程序存储空间而非内存空间. 在有些时候,定义的数组中包含的元素比较多的时候,数组的所占的存储空间就会大一些,而不希望其影…
算法提高 6-9删除数组中的0元素   时间限制:1.0s   内存限制:512.0MB      编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动.注意,CompactIntegers函数需要接收数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数. 输入时首先读入数组长度,再依次读入每个元素. 将调用此函数后得到的数组和函数返回值输出. 样例输入 72 0 4 3 0 0 5 样例输出 2 4 3 54   记得这题是第二次做了吧,…
//1.一个数组中只有两个数字是出现一次, //其他所有数字都出现了两次. //找出这两个数字,编程实现.a //^=单独两个数的^结果 //单独出现的两个数不同位的标记 //position: ^结果中第一个出现1的位置 //position位两个数肯定有一个为0 ,一个为1 //把数组分成两部分 //1:position为1 //2:position为0 //每一部分都有一个只出现一次的数字,其他的都是成对出现 //每一部分^结果为单独出现的数字 #include<stdio.h> #in…
问题描述 对于给定整数数组a[],寻找其中最大值,并返回下标. 输入格式 整数数组a[],数组元素个数小于1等于100.输出数据分作两行:第一行只有一个数,表示数组元素个数:第二行为数组的各个元素. 输出格式 输出最大值,及其下标 样例输入 3 3 2 1 样例输出 3 0 代码如下: /*对于给定整数数组a[],寻找其中最大值,并返回下标*/ #include<stdio.h>int maxfun(int a,int b);int main(){ int i,j,N; int sum = 0…
题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1赋给max2,使原先最大的数成为第二大的数,再将这个数a赋给max1,如果这个数a比max1小但比max2大,则将这个数a赋值给max2,依次类推,直到数组中的数都比较完. c语言代码: #include<stdio.h> #include<stdlib.h> #define N 10…
该题目来源于牛客网<剑指offer>专题. 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. Go语言实现: func searchMatrix(matrix [][]int, target int) bool { if matrix == nil || len(matrix[0]) < 1 { return false } row := 0 c…
该题目来源于牛客网<剑指offer>专题. 在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字.例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2. 可以用hash来实现,遍历的时候,元素作为key存入map,当出现重复元素时,判断key已存在,输出元素即可. 题目里写了数组里数字的范围保证在0 ~ n-1 之间,可以利用现有数组设置标志…
该题目来源于牛客网<剑指offer>专题. 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如果不存在则输出0. Go语言实现: 方法一,排序取中间值判断: func moreThanHalfNum(nums []int) int { if nums == nil { return 0 } ​ sort.Ints(nums) //如果条件符合,结果一定是…
该题目来源于牛客网<剑指offer>专题. 统计一个数字在排序数组中出现的次数. 看到排序数组,要想到用二分查找. 先找到最前面的数字k,再找到最后面的数字k,通过下标求出次数. Go语言实现: func getNumberOfK(num []int, k int) int { length := len(num) firstK := getFirstK(num, k, 0, length-1) lastK := getLastK(num, k, 0, length-1) if firstK…
该题目来源于牛客网<剑指offer>专题. 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出.即输出P%1000000007. 输入描述: 题目保证输入的数组中没有的相同的数字. 数据范围: 对于%50的数据,size<=10^4 对于%75的数据,size<=10^5 对于%100的数据,size<=2*10^5 示例: 输入 1,2,3,4,5,6,7,…
系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即时查收 1 题目 函数:fun() 功能:删除一维数组中所有相同的数,使之只剩一个. 描述:数组中的数据已经按照从小到大排列,函数返回删除后数组中元素的个数 举例: 一维数组中的数据是:2,2,2,2,3,3,4,4,5,6,6,6,7,7,8,9,9,9,10,10 删除后数组中的内容是:2,3,4,5,6…
简介: 最近在工作中遇到一个问题,需要离线比较两张Mongodb表的差异:大小差异,相同的个数. 所以,我将导出的bson文件转成了json文件(2G以上),一条记录正好是一行. 问题: 因此我将以上问题转换成了比较两个(本例考虑多个)超大数组的交集!所以要求时间复杂度.空间复杂度应该尽可能的低! 降低内存: 由于要将文件的每一行都读到内存里,如果行的长度比较大的话,内存肯定是不够的! 所以我想到的办法是讲每一行压缩成md5编码. String line = md5(line).然后再将新的li…
//数字在排序数组中出现的次数(改动) //统计一个数字在排序数组中出现的次数.比如:排序数组{1,2,3,3,3.3,4,5}和数字3,因为3出现了4次,因此输出4. #include <stdio.h> int One_Num_Times(int *arr, int len, int num) { int i = 0; int times = 0; for (i = 0; i < len && num>=*arr;i++,arr++) { if (*arr ==…
//在两个数成对出现的数组中找到一个单独的数.比如{1,2,3.3,1,4.2},即找出4 #include <stdio.h> int find(int arr[], int len) { int i = 0; int ret = 0; for (i = 0; i < len; i++) { ret = ret^arr[i]; } return ret; } int main() { int arr1[] = { 1, 2, 2, 3, 1, 5, 3 }; int arr2[] =…
package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Test { /* * 在某个字符数组中查找某个字符出现的次数 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符:"); char a = sc.ne…
//统计数组中出现次数超过一半的数字 #include <stdio.h> int Find(int *arr, int len) { int num = 0; //当前数字 int times = 0; //当前数字出现的次数 int i = 0; for (i = 0; i<len; i++) { if (times == 0) { num = arr[i]; times = 1; } else if (arr[i] == num) times++; else times--; }…
// //  main.c //  Pointer_search // //  Created by ma c on 15/8/2. //  要求:通过指针查找,实现比较两个有序数组中的元素,输出两个数组中的第一个相同的元素值. #include <stdio.h> int *searchSameElement(int *a,int *b,int len1,int len2); int main(int argc, const char * argv[]) { int a[] = {5,11,…
// //  main.c //  Pointer_search // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年. All rights reserved. //  要求:通过指针查找,实现比较两个有序数组中的元素,输出两个数组中的第一个相同的元素值. #include <stdio.h> int *searchSameElement(int *a,int *b,int len1,int len2); int main(int…
//二维数组中的查找,杨氏矩阵 //在一个二维数组中,每行都依照从左到右的递增的顺序排序.每列都依照从上到下递增的顺序排序. //请完毕一个函数.输入这种一个数组和一个数,推断数组中是否包括这个数. #include <stdio.h> #define Col 4 int Yang(int arr[][Col], int val) { int i=0; int j = Col - 1; int tmp = arr[i][j]; //找到左上角的数 while (1) { if (tmp ==…
/* * @lc app=leetcode.cn id=26 lang=c * * [26] 删除排序数组中的重复项 * * https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/ * * algorithms * Easy (42.77%) * Total Accepted: 89.1K * Total Submissions: 208.1K * Testcase Example: '[…
// 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #include <stdio.h> #define col 4 #define rol 4 int yang(int(*p)[col], int num) { int i = 0; int j = col - 1; while (j+1) { int *q = &(p[i][j]); if…
//数字在排序数组中出现的次数. //统计一个数字在排序数组中出现的次数.比如:排序数组{1,2,3,3,3,3,4,5}和数字3,因为3出现了4次,因此输出4. #include <stdio.h> int One_Num_Times(int *arr, int len, int num) { int i = 0; int times = 0; for (i = 0; i < len;i++,arr++) { if (*arr == num) { times++; } } return…
// 题目:统计一个数字在排序数组中出现的次数. //  比如:排序数组{1.2,3,3,3,3,4.5}和数字3,因为3出现了4次.因此输出4 有一种最简单的算法,遍历.可是有比它效率更高的 先看遍历: #include <stdio.h> #include <assert.h> int num_time(int *arr, int len, int a) { int i = 0; int count = 0; assert(arr != NULL); for (; i <…
//旋转数组的最小数字 //题目:把一个数组最開始的若干个元素搬到数组的末尾.我们称之为数组的旋转. //输入一个递增排序的数组的一个旋转.输出旋转数组中的最小元素. //比如:数组{3.4,5,1,2}为{1,2.3.4.5}的一个旋转,最小元素是1. #include <stdio.h> #include <assert.h> int min_equ(int *src, int left, int right) { int i = 0; int ret = src[left];…
#include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7,2,3,1,6,8,4}; int i=0,j=0; int n = sizeof(a)/4; //外循环n-1轮 for(i=0;i<n-1;i++){ int pos = i;//始终指向最小的位置 for(j=i+1;j<n;j++){ if(a[j]<a[pos]){ pos = j…
题目: 题目来源WUSTOJ 源代码: #include<stdio.h> int main() { int n, m, i, a[20]; while (scanf("%d", &n) != EOF) { for (i = 0; i < n; i++) { scanf("%d", &a[i]); // 输入n个整数 } scanf("%d", &m); //输入m for (i = 0; i <…
//计算输出给定数组中每相邻两个元素的平均值的平方根之和. #include <stdio.h> #include <math.h> ]) { double a,b,s=0.0; ; i < ;) { //a = (x[i++] + x[i]) / 2;//不可以这样使用,同一条语句中,i相当于还没有改变. a = x[i]; a+=x[++i]; a /= ; b = sqrt(a);//求平方根 s = s + b; printf("%f\n", a)…