精华内容
下载资源
问答
  • 一个数组中元素大多奇数和偶数是混在一起的,而将数组中元素奇数和偶数分开存放则是我们要解决的问题。  将奇数和偶数分开存放然后打印出来的思路是先创建两个空间,将奇数和偶数分别存放起来,然后再将他们又...

           在一个数组中的元素大多奇数和偶数是混在一起的,而将数组中元素奇数和偶数分开存放则是我们要解决的问题。

           将奇数和偶数分开存放然后打印出来的思路是先创建两个空间,将奇数和偶数分别存放起来,然后再将他们又存进原数组,最后将数组元素循环打印就完成了奇数和偶数的分别存放。

    #include<stdio.h>
    int main()
    {
    	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    	int i = 0;
    	int j = 0;
    	int k = 0;
    	int sz = sizeof(arr) / sizeof(arr[0]);
    	int arr2[10] = { 0 };
    	int arr3[10] = { 0 };
    	while (i < sz)
    	{
    		if (arr[i] % 2 == 1)
    		{
    			arr2[j] = arr[i];
    			j++;
    			i++;
    		}
        	else
    		{
    			arr3[k] = arr[i];
    			k++;
    			i++;
    		}
    	}
    	i = 0;
    	j --;
    	k --;
    	while (j != -1)
    	{
    		arr[i] = arr2[j];
    		j--;
    		i++;
    	}
    	while (k != -1)
    	{
    		arr[i] = arr3[k];
    		i++;
    		k--;
    	}
    	for (i = 0; i < sz; i++)
    	{
    		printf("%d ", arr[i]);
    	}
    	system("pause");
    	return 0;
    }

    展开全文
  • 输入一个整数数组,实现一个函数,来调整该数组数字的顺序使得数组所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。  数组奇数位于前半部分,偶数位于后半部分,实现这个需要用到循环,在写函数时...

           输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

           数组奇数位于前半部分,偶数位于后半部分,实现这个需要用到循环,在写函数时,要知道奇数和偶数满足的条件是什么,循环开始当满足前半部分下标小于后半部分下标(first<end)时,如果前面的数是奇数则下标往前再走一个,重复执行,直到遇到偶数,下标不动,后半部分下标开始,如果是偶数,则下标往前走,直到遇到一个奇数,下标满足交换条件,则把这两个数交换,使奇数位于前面,偶数换到后面。

    程序如下:

    #include <stdio.h>
    #include <string.h>
    #include <assert.h> 
    int swap(int *x, int *y)   //交换两个变量的内容
    {
    	int tmp;       
    	tmp = *x;
    	*x = *y;
    	*y = tmp;
    }
    void show(int arr[], int length)   //打印arr的内容
    {
    	assert(arr);    
    	int i = 0;
    	for (i = 0; i < length ; i++)
    	{
    		printf("%d ", arr[i]);
    	}
    	printf("\n");
    
    }
    int *newline(int *arrold,int len )
    {
    	assert(arrold);
    	int first = 0;
    	int end = len - 1;
    	int i = 0;
    	while (first < end)
    	{
    		while ((first < len) && (first<end) && (arrold[first] & 1))
    		{
    			first++;   //如果是奇数,则执行循环体内容
    		}
    		while ((end>first) && (end>0) && !(arrold[end] & 1))
    		{
    			end--;   //如果是偶数执行循环体内容
    		}
    		if (first < end)
    		{
    			swap(&arrold[first], &arrold[end]);   //前一个数是偶数,后一个数是奇数,交换两数
    			first++;    //前面下标往后移,后面前移
    			end--;
    		}
    	}
    }
    int main()
    {
    	int array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 945,66,76,33 };
    	int len = sizeof(array) / sizeof(array[0]);
    	show(array, len);     //奇偶交换前打印一下
    	newline(array,len);   
    	show(array, len);
    	system("pause");
    	return 0;
    }

    运行结果如下图:



    展开全文
  • 【算法】删除数组中偶数下标的元素,返回奇数下标的元素题目解法解法二解法三 - 双指针法三种算法效率比较 题目 删除ArratList索引为偶数的节点 输入: [1,2,3] 输出: [2] void removeItemsWithEvenIndex...

    学而不思则罔,思而不学则殆

    【算法】【数组】删除数组中偶数下标的元素,返回奇数下标的元素


    题目

    删除ArratList中索引为偶数的节点
    输入:
    [1,2,3]
    输出:
    [2]

    void removeItemsWithEvenIndex(ArrayList<Integer> list) {
    }
    

    注意:list既是输入,也是输出

    解法一

    思路:通过iterator迭代删除
    时间复杂度: O ( n 2 ) O(n^2) O(n2)
    空间复杂度: O ( 1 ) O(1) O(1)

        static void removeItemsWithEvenIndex1(ArrayList<Integer> list) {
            Iterator<Integer> iterator = list.iterator();
            int index = 0;
            while (iterator.hasNext()) {
                iterator.next();
                if (index % 2 == 0) {
                    iterator.remove();
                }
                index++;
            }
        }
    

    解法二

    思路:复制一份数据tmpList,把原有list列表清空,再把tmpList中奇数索引的元素加入到list中
    时间复杂度: O ( n ) O(n) O(n)
    空间复杂度: O ( n ) O(n) O(n)

        static void removeItemsWithEvenIndex2(ArrayList<Integer> list) {
            //copy一份
            ArrayList<Integer> tmpList = new ArrayList<Integer>(list);
            list.clear();
            //获取偶数节点
            for (int index = 0; index < tmpList.size(); index++) {
                if (index % 2 != 0) {
                    list.add(tmpList.get(index));
                }
            }
        }
    

    解法三 - 双指针法

    思路:双指针法标记,把奇数索引位置的元素前移。慢指针指向需要填充的位置,快指针遇到偶数索引跳过,奇数索引就把位置的元素复制到慢指针位置。
    时间复杂度: O ( n ) O(n) O(n)
    空间复杂度: O ( 1 ) O(1) O(1)

        static void removeItemsWithEvenIndex3(ArrayList<Integer> list) {
            //
            int index = 0;
            for (int i = 0; i < list.size(); i++) {
                if (i % 2 != 0) {
                    //奇数下标数据前移
                    list.set(index++, list.get(i));
                }
            }
            //移除[index , list.size())的数据
            if (list.size() > index) {
                list.subList(index, list.size()).clear();
            }
        }
    

    三种算法效率比较

    算法\数量10010001w10w20w30w40w50w60w70w80w90w100w200w500w1000w2000w5000w
    算法一005535222048828842136481953726423339504438054999-----
    算法二00155688910101013161403872224
    算法三00155556777881018243987

    随着数量的增加,第一种算法已经不能看了,直接砍掉。二三种时间差距不大,主要是空间消耗。
    测试代码:

        public static void main(String[] args) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            for (int i = 0; i < 50000000; i++) {
                list.add(i);
            }
            System.out.println(list.size());
    
            ArrayList<Integer> list1 = new ArrayList<>(list);
            ArrayList<Integer> list2 = new ArrayList<>(list);
            ArrayList<Integer> list3 = new ArrayList<>(list);
    
            long start = System.currentTimeMillis();
            removeItemsWithEvenIndex3(list1);
            long end = System.currentTimeMillis();
            System.out.println(list1.size() + " " + (end - start));
    
    
            start = System.currentTimeMillis();
            removeItemsWithEvenIndex2(list2);
            end = System.currentTimeMillis();
            System.out.println(list2.size() + " " + (end - start));
    
    
            start = System.currentTimeMillis();
            removeItemsWithEvenIndex1(list3);
            end = System.currentTimeMillis();
            System.out.println(list3.size() + " " + (end - start));
    
            System.out.println(list1.equals(list2));
            System.out.println(list1.equals(list3));
        }
    
    展开全文
  • //删除数组中奇数 method 1 function deleteOdd(arr){ var newArray = []; for(var i=0;i&lt;arr.length;i++){ if(arr[i]%2==0){ newArray.push(arr[i]); } } return newArra...
    //删除数组中的奇数 method 1
    function deleteOdd(arr){
        var newArray = [];
        for(var i=0;i<arr.length;i++){
            if(arr[i]%2==0){
                newArray.push(arr[i]);
            }
        }
        return newArray;
    }
    var numbers = [11,22,33,44,55,66];
    console.log(deleteOdd(numbers));// [22, 44, 66]
    
    
    //删除数组中的奇数 method 2
    function deleteOdd(arr){
        for(var i = 0;i<arr.lenght;i++){
            if(arr[i]%2==1){
                arr.splice(i,1);
                i--;
            }
        }
        return arr;
    }
    var numbers=[1,2,3,4,5,6];
    console.log(deleteOdd(numbers));//问题待解决
    
    展开全文
  • -有整数数组,里面有奇数和偶数,1)将所有奇数挪到偶数前面,2)保障所有奇数和偶数内部相对顺序不发生变化,3)在原数组上操作o(1)的空间复杂度 public class Array { public static void main(String[] ...
  • 定义20个元素的整型数组并赋初值。输入一个数,如果该数在数组中存在,则删除该数,其后的每个数前移一位,最后补0。
  • C语言求数组中最大元素并输出。

    千次阅读 2020-07-16 02:16:02
    我这是设计了一个函数来求最大元素。 #include<stdio.h> int findmax(int arr[5]) { int max=arr[0]; int index=0; int i=0; for(i;i<5;i++) { if (arr[i]>max) { max=arr[i]; index=i...
  • php的数组比较好,既有C的风格(可以[]索引),又有java的追加新元素。...又查了查,发现系统居然没有提供能删除数组中指定元素,索引还能自动排序的函数, 好吧,没有就自己写一个 (PS:这里主要是借助了array_
  • 问题:输入一个整数数组,实现一个函数来调整该数组中数字元素的顺序,使得所有的奇数位于数组的前半部分,所有的偶数都位于数组的后半部分,并保证奇数奇数,偶数和偶数之间的相对位置保持不变。思路:1.简单点的...
  • //abcd...s 这19个字符循环106次成一个长度2014的字符串,然后删除奇数个,得到小串,再删,最后的字符是? #define _CRT_SECURE_NO_DEPRECATE #include<stdio.h> #include<windows.h> #include&...
  • JS 去掉数组的所有的奇数/偶数

    千次阅读 2016-11-18 14:12:06
    var arr=[12,3,1,1,1,3,4,0] function finJO(arr){ for(var i=0; i if(arr[i]%2==1){  // 如果要偶数 就把1变成0即可。 arr.splice(i,1); i-- } } return arr } finJO(arr)
  • 做LED分拣项目过程遇到这样一个问题,需要将芯片预扫描的二维数组中的所有(0,0)数据删除并改变数组的读,通俗地讲就是比如Arrya[10,2]数组,10行2列数据,假设数组中有5个(0,0)数据;则需要将5个数据删除并吧...
  • 双指针法,即一个快指针和一个慢指针,快指针提前遍历数组元素,慢指针停在被处理元素位置。可以用数组的索引i,ji,ji,j实现双指针算法。 1.2删除数组中的重复元素 1.2.1解题思路 给定数组是有序的(若无序,首先调用...
  • #include&lt;stdio.h&gt;#include&lt;conio.h&gt;int main(){ int a[10]={1,3,2,4,6,5,9,8,7,0}; int *p=a,i; for(i=0;i&lt;10;i++){ printf("%d ",*(p+i));...} 
  • 记录史上第次个人通过绞尽脑汁完成的数组之间的抽取和组装。 废话少说直接上代码。 this.originArr = [ {username:'pride',id_code:'123',sink:'mabe1'}, {username:'red',id_code:'234',sink:'mabe2'}, {...
  • 思路: 遍历数组,把数组中元素保存到hashmap, key是element的值,value是element出现的次数,保存之前check这element是否存在,若存在,则将其删除,并不再保存,若不存在,则保存。这样遍历完次之后,...
  • 本文演示了如何删除单个元胞的数据,以及如何删除元胞数组中的全部元胞。 创建一个 3×3 元胞数组 ...通过将一个数组赋给元胞并使用花括号建立内容索引 {} 来删除特定元胞的内容。 C{2,2} = [] C=3×3 cell array
  • 插入一个数,奇数在前偶数在后 思路1 开辟新数组 package com.tulun.src; import java.lang.reflect.Array; import java.util.Arrays; public class Arr { public static void main(String[] args){ //...
  • 算法题:给你一个整形数组,要求删除其中一个元素,使得剩余元素的乘积最大。如何找到这个待删除元素? ​ 分析情况:当数组中有负数的情况 和 没有负数的情况 当数组中全是正整型的值 ,就取其中最小的值 当...
  • 如果单纯为了答案,那么很多事情都会失去一缕青烟。 题目一 从键盘输入n(不超过100)个数存入一...将b数组输出,数据之间用逗号,隔开,输出最后一个数据后要求换行。 #include<stdio.h> int main() { int n; ...
  • #include <math.h> #include <stdio.h> main() { int a[]= {1,2,3,4,5,6,7,8},i,j=0; printf(“输出奇数:\n”); for(i=0; i<8; i++) { if(a[i]%2!...printf(”\n奇数个数:%d",j); }...
  • 一个数组中元素大多奇数和偶数是混在一起的,而将数组中元素奇数和偶数分开存放则是我们要解决的问题。海风教育退费 海风教育在线辅导0元一对一试听课等你来领取,领取课程方法: 1、私信留下您的手机号和姓名,...
  • 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数奇数,偶数和偶数之间的相对位置不变。
  • Python 数组的遍历与元素删除

    千次阅读 2020-03-11 18:50:09
    上代码 #!/usr/bin/env python # coding=utf-8 # 2020-03-11 16:39:19 ... # 删除列表奇数 list1 = [1,3,5,7,9,2,4,6,8,10] print(list1) for item in list1: print('item:',item) ...
  • 并且创建一个方法,该方法用于对数组的偶数元素进行删除,保留奇数元素。 代码如下(示例): import java.util.Collections; import java.util.Scanner; import java.util.ArrayList; public class Test1 { /**...
  • 笔试记录:随机删除元素后集合数组位数 输入: 第一行,一个数字n(0 <= 200000) 第二行,输入n个数字,第 i 个数字表示 ai ,ai 在32位整数范围内。 输出: 输出n行,第 i 行表示删除 ai 后,剩下的 n-1 个...
  • 目录题目分析解法一解法二解法三运行效率比较扩展总结题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。分析事实上,这个题比较简单,很...
  • #include <stdio.h> #include <stdlib.h> #define N 10 ...printf(“输出奇数:”); int a[N]= {1,2,3,4,5,6,7,8}; for(i=0; i<=9; i++) { if(a[i]%2!=0) a[j++]=a[i]; } for(b=0; b...
  • 对于数组元素删除

    2020-03-12 13:15:28
    在程序算法上我们经常会遇到 对于一个数组来讲删除奇数位,直到剩下最后一个元素。 这样的题目可以有不同的问的形式,最后呢是引出来数组按一定...从数组中真的删除元素是很麻烦的,删掉一个元素之后我们要做的是...
  • 然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1}; input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,500
精华内容 9,800
关键字:

删除一个数组中奇数元素