两数组中的相同元素

本文介绍了一种通过排序和遍历两个整数数组来找出它们共有元素的方法,并提供了一个完整的C语言实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//找两个数组中的相同元素,首先对两数组分别排序
#include<stdio.h>
int Same[20];
int SameElement(int Array1[20],int Array2[20]);
void quickSort(int Array[20],int left,int right);
void main()
{
    int Array1[20] = {1,21,2,22,3,23,4,24,5,25,6,26,7,27,8,28,9,29,10,30};
 int Array2[20] = {1,2,3,5,4,6,8,7,9,10,11,12,13,14,15,16,20,17,18,16};
 
 int number = SameElement(Array1,Array2);
 for(int i = 0; i < number; i++ )
  printf("%d ",Same[i]);
 printf("\n");
 
 
}

int SameElement(int Array1[20],int Array2[20])
{
 int count1 = 0,count2 = 0;
 int countNum = 0;
 quickSort(Array1,0,19);
 quickSort(Array2,0,19);
 
 while(count1<20&&count2<20)
 {
  if(Array1[count1]==Array2[count2])
  {
   Same[countNum] = Array1[count1];
   count1++;
   count2++;
   countNum++;
  }else
   if(Array1[count1]<Array2[count2])
   {
    count1++;
   }
   else{
    count2++;
   }
 }
 
 return countNum;
}

void quickSort(int Array[20],int left,int right)
{
 int count_left = 0;
 int count_right = 19;
 int temp = Array[(left+right)>>1];
 
 while(count_left<count_right)
 {
  while(Array[count_left]<temp)
   count_left++;
  
  while(Array[count_right]>temp)
   count_right--;
  
  
  if(count_left<=count_right)
  {
   int tp;
   tp = Array[count_left];
   Array[count_left] = Array[count_right];
   Array[count_right] = tp;
   count_left++;
   count_right--;
  }
  
  if(count_right>left)  quickSort(Array,left,count_right);
  if(count_left<right)  quickSort(Array,count_left,right);
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值