提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、数组奇偶排序
题目要求
例如:输入 1 2 3 4 5 6 7 8 9 10
排序为 1 3 5 7 9 2 4 6 8 10
问题分析:
对于此类排序的有一个很好的思路那就是把其中奇数个数取出来然后再把偶数个数取出来最后在拼接为一个新的数组;但是这个方法要把数组遍历三次效率没有那么高我们有一个新的方法:
那就是我们把数组分为左和右我们分别从左和右开始遍历,直到左边找到偶数右边找到奇数,然后交换然后在把对应数加一下防止重复判断这个数当然我们的条件是left <right
#include<stdio.h>
#include"test.h"
void paixu(int arr[], int sz)
{
int left = 0;
int right = sz - 1;
while (left < right)
{
while ((left < right)&&(arr[left] % 2 == 1))
{
left++;
}
while ((left < right) && (arr[right] % 2 == 0))
{
right--;
}
if (left < right)
{
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;//减少重复遍历
}
}
}
int main()
{
int arr1[10] = { 0 };
int sz = sizeof(arr1) / sizeof(arr1[0]);
for (int i = 0; i < sz; i++)//输入数组
{
scanf_s("%d", &arr1[i]);
}
paixu(arr1, sz);//排序函数
for (int i = 0; i < sz; i++)//输出数组
{
printf("%d ", arr1[i]);
}
}
二、
1.引入库
分析题目:我们的思路是分别把第二行和第三行分别看做一个数组来进行比较
用第二排数组与第三排进行比较,谁小谁就放前面然后++在与刚才的进行比较以此类推;最后还剩一段分情况进行拼接
代码部分:
#include<stdio.h>
int main()
{
int n = 0;
int m = 0;
scanf_s("%d %d", &n,&m);
int arr1[100] = { 0 };//在编译器里边不支持这么左用变量初始化
int arr2[100] = { 0 };
for (int i = 0;i < n;i++)
{
scanf_s("%d", &arr1[i]);
}
for (int i = 0;i < m;i++)
{
scanf_s("%d", &arr2[i]);
}
int j = 0;
int k = 0;
while (j < n && k < m)
{
if (arr1[j] < arr2[k])
{
printf("%d ", arr1[j]);
j++;
}
else
{
printf("%d ", arr2[k]);
k++;
}
}
if (j < n)
{
for (;j < n;j++) {
printf("%d ",arr1[j]);
}
}
else
{
for (;k< m;k++) {
printf("%d ", arr2[k]);
}
}
return 0;
}
总结:建议在输出的时候%d后面增加一个空格,写代码细心分清楚arr1 arr2的区别复制的时候记得该参数,学习适合我的方法就是先自己领会一遍然后再写文章记录