| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3022 人关注过本帖
标题:给定整型数组,排序,要求奇数在前,偶数在后,求更简单方法
只看楼主 加入收藏
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
给定整型数组,排序,要求奇数在前,偶数在后,求更简单方法
程序代码:
  #include<iostream>
   void Sort(int *nums,int length);
   void Sort(int *nums,int length)
   {
        int count_p=0;
        for(int i=0;i<length;i++)
        {
            if(nums[i]%2!=0)count_p++;
        }
        std::cout<<count_p<<std::endl;
        //排奇偶
        for(int i=0,j=0;i<count_p;i++)
        {
            if(nums[i]%2!=0);//奇,跳过
            else
            {
                for(j=i+1;j<length,nums[j]%2==0;j++);
                int temp=nums[i];
                nums[i]=nums[j];
                nums[j]=temp;
            }
        }

        for(int i=0;i<count_p;i++)
        {
            for(int j=i+1;j<count_p;j++)
            {
                if(nums[i]>nums[j])
                {
                    int temp=nums[i];
                    nums[i]=nums[j];
                    nums[j]=temp;
                }
            }
        }
        for(int i=count_p;i<length;i++)
        {
            for(int j=i+1;j<length;j++)
            {
                if(nums[i]>nums[j])
                {
                    int temp=nums[i];
                    nums[i]=nums[j];
                    nums[j]=temp;
                }
            }
        }
   }
   int main()
   {
       int a[10]={22,8,7,20,5,4,3,9,1,31};
       Sort(a,10);
       for(int i=0;i<10;i++)std::cout<<a[i]<<"\t";
       std::cout<<std::endl;
       return 0;
   }
搜索更多相关主题的帖子: 简单方法 color 
2016-03-12 21:42
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:10 
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool rearrange(int m1,int m2)
{
    if(m1%2!=m2%2)
        return m1%2==1;
    else
        return m1<m2;
};
int main()
{
    vector<int>arr;
    vector<int>::iterator iter;
    arr.push_back(5);
    arr.push_back(8);
    arr.push_back(87);
    arr.push_back(3);
    arr.push_back(10);
    arr.push_back(20);
    for(iter=arr.begin();iter!=arr.end();iter++)
        cout<<*iter<<endl;
    std::sort(arr.begin(),arr.end(),rearrange);
    cout<<"排序后\n";
    for(iter=arr.begin();iter!=arr.end();iter++)
        cout<<*iter<<endl;
    return 0;
}
2016-03-13 18:57
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
回复 2楼 yangfrancis
感谢,请问sort()函数是如何利用第三个参数传入的那个二目运算函数的呢?麻烦您讲解一下
2016-03-14 11:45
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
那第三个参数就是排序规则的函数名,该函数两个参数是进行排序的两个元素。函数返回真,第一个参数排前,返回假第二个参数排前。用sort时矢量中的元素两个两个地都排第三个参数定义的函数排序。
2016-03-14 12:47
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:5 
我就不明白了,位运算比四则运算快不知道多少倍。不是要简单粗暴么?



程序代码:
int min=1;
    int max=10;
    for(int i=min;i<=max;i++)
    {
        if(i&1)
            cout<<"单数:"<<i<<endl;
        else
            cout<<"双数:"<<i<<endl;
    }
2016-03-14 14:36
快速回复:给定整型数组,排序,要求奇数在前,偶数在后,求更简单方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018419 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved