数组的一些常用方法(持续更新)

//4.15增加方法4
1.整形数组去重
2.字符型数组去重
3.数组排序
4.字符串数组种的字符串的交换

1.整形数组去重

#include <stdio.h>
int main()
{
	//先进行排序在去重 
	int a[10] = {1,1,2,2,1,2,3,4,1,2};
	int len = 10;
	int m = len;
	for(int i=0; i<9; i++)
	{
		for(int j=i+1; j<10; j++)
		{
			if(a[i] >= a[j])
			{
				int t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}
	for(int i=0; i<m; i++) printf("%d ",*(a+i));
	printf("\n");
	for(int i=0; i<m-1; i++)
	{
		if(a[i] == a[i+1])
		{
			for(int k=i; k<m-1; k++)
			{
				a[k] = a[k+1];
			}
			m--;
			i--;//选区上面a[i+1]那个元素为起始判断点 
		}
	}
	for(int i=0; i<m; i++)
	{
		printf("%d ",*(a+i));
	 } 
}

运行结果:
在这里插入图片描述
2.字符型数组去重

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	//先排序,后去重 
	//也可以不排序直接去重
	char *s;
	s = (char*)malloc(sizeof(char)*20);
	gets(s);
	for(int i=0; i<strlen(s)-1; i++)
	{
		for(int j=i+1; j<strlen(s); j++)
		{
			if(*(s+i) > *(s+j))
			{
				char c = *(s+i);
				*(s+i) = *(s+j);
				*(s+j) = c;
			}
		}
	}
	printf("%s\n",s);
	for(int i=0; i<strlen(s)-1; i++)
	{
		for(int j=i+1; j<strlen(s); j++)
		{
			if(*(s+i) == *(s+j))
			{
				for(int k=i; k<strlen(s)-1; k++)
				{
					s[k] = s[k+1];
					if(k == strlen(s)-2)
					{
						s[k+1] = '\0';
					}
				}
				i--;
			}
		}
	}
	printf("%s",s);
}

输出结果:
在这里插入图片描述
3.数组排序
法一:

#include <stdio.h>
int main()
{	//法1:将每个元素依次和它后面的元素进行比较 
	//将数组从小到大进行排序 
	int a[10] = {10,9,8,7,6,5,4,3,2,1};
	for(int i=0; i<9; i++)
	{
		for(int j=i+1; j<10; j++)
		{
			if(a[i] > a[j])
			{
				int t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}
	for(int i=0; i<10; i++) printf("%d ",*(a+i));
}

运行结果:
在这里插入图片描述
法二:

#include <stdio.h>

int main()
{
	//冒泡排序
	int a[10] = {10,9,8,7,6,5,4,3,2,1};
	for(int i=0; i<10; i++)//进行次数==元素个数 
	{
		for(int j=0; j<10-i-1; j++)//每次都从开头与它后一名的元素比较,因为有j+1所以范围要减小1,
		{							//每次比较完后都能选中比较时的最大元素,因此i次比较确定了i个元素,就不要在比较了 
			if(a[j] > a[j+1])
			{
				int t = a[j];
				a[j] = a[j+1];
				a[j+1] = t;
			}
		}
	 }
	 for(int i=0; i<10; i++)
	 {
	 	printf("%d ",*(a+i));
	 }
 } 

4.字符串数组种的字符串的交换

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void change_str(char *a,char *b)
{
	int len_a = strlen(a);
	int len_b = strlen(b);
	char str[len_a];
	for(int i=0; i<len_a; i++)
	{
		str[i] = *(a+i);
	}
	for(int i=0; i<len_b; i++)
	{
		*(a+i) = *(b+i);
	}
	*(a+len_b) = '\0';
	for(int i=0; i<len_a; i++)
	{
		*(b+i) = str[i];
	}
	*(b+len_a) = '\0';
}
int main()
{
	char name[][20] = {"dj","ddjj"};
	change_str(name[0],name[1]);
	for(int i=0; i<2; i++)
	{
		printf("name[%d] = %s\n",i,name[i]);
	}
	
	return 0;
}
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: JavaScript提供了许多数组API方法来方便地操作数组。其中一些常用方法包括: 1. filter()方法:该方法创建一个新数组,其中包含满足指定条件的所有元素。可以使用filter()方法来过滤数组中的元素。在给定的代码示例中,使用了一个for循环来过滤出名字中包含"John"的员工,并将它们添加到一个新的数组中。\[1\] 2. forEach()方法:该方法数组中的每个元素执行提供的回调函数。回调函数接受三个参数:当前元素的值、当前元素的索引和数组本身。forEach()方法没有返回值,它只是对每个元素执行回调函数。在给定的代码示例中,使用forEach()方法遍历数组并打印每个元素的值、索引和数组本身。\[2\] 3. join()方法:该方法数组的所有元素连接成一个字符串,并返回该字符串。默认情况下,元素之间使用逗号分隔。在给定的代码示例中,使用join()方法数组中的元素连接成一个字符串,并将结果打印出来。\[3\] 这些是JavaScript中一些常用数组API方法,它们可以帮助我们更方便地操作和处理数组。 #### 引用[.reference_title] - *1* [JavaScript 数组filter方法完整介绍](https://blog.csdn.net/allway2/article/details/124954994)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [JS数组API大全(持续更新)](https://blog.csdn.net/BBBBobo/article/details/121869585)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值