整数数组排序--各个元素拼接所得结果最小
2014-09-09 15:48
190 查看
总之将相邻的两个数m、n进行比较大小的方法修改为mn和nm比较大小即可
#include "stdafx.h" #include <time.h> #include <stack> #include <string> #include <iostream> using namespace std; bool comp(int num1,int num2) { int temp1=num1; int temp2=num2; int sum1=num1; int sum2=num2; if(num1+num2==91) { num1=num1; } while(temp2!=0) { sum1*=10; temp2/=10; } sum1+=num2; while(temp1!=0) { sum2*=10; temp1/=10; } sum2+=num1; if(sum1<=sum2) { return true; } else { return false; } } void merge(int *s,int start,int med,int end) { int i=start; int j=med+1; int k=0; int* temp=new int[end-start+1]; while(i<med+1 && j<=end) { if(comp(s[i],s[j])) { temp[k++]=s[i]; i++; } else { temp[k++]=s[j]; j++; } } if(i<med+1) { while(i<med+1) { temp[k++]=s[i]; i++; } } if(j<=end) { while(j<=end) { temp[k++]=s[j]; j++; } } for(k=0;k<=end-start;k++) { s[start+k]=temp[k]; } delete temp; return; } void mergeSort(int*s,int start,int end) { if(start<end) { int med=(start+end)/2; mergeSort(s,start,med); mergeSort(s,med+1,end); merge(s,start,med,end); } return; } void showSet(int *s,int n) { for(int i=0;i<n;i++) { cout<<s[i]<<" "; } cout<<endl; } int main() { int s[5]={3,83,8,13,1}; showSet(s,5); mergeSort(s,0,4); showSet(s,5); system("pause"); return 0; }
相关文章推荐
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型数组排序,使得按序拼接数组各元素得到的值最小。
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。
- 2011-12-04 15:36 JAVA实现位向量给无重复元素的整数数组排序
- 输入一个整数数组,返回所有元素两两之差绝对值最小的值,O(n)算法
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值
- 程序员面试题目总结--数组(三)【旋转数组的最小数字、旋转数组中查找指定数、两个排序数组所有元素中间值、数组中重复次数最多的数、数组中出现次数超过一半的数】
- 随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。
- 题目:给一个排序好的整数数组A,请写一个函数,输入是数组A和一个整数x,返回数组A中值小于x的最大元素的索引值
- 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。
- 【1】 设一个长度为10的整型数组,  0)要求每个元素的值通过scanf输入,输入完成后,  1)请顺序输出这些整数,  2)请倒序输出这些整数,  3)输出这些数中的最大值,最小值
- 实验9(1)程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- 随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。
- 算法题: 求一个整数数组中,通过元素加减运算得到指定结果的所有运算过程. 例如【5,4,6,7,1】= 9 ?
- 随机产生20个[10,50]的正整数,存到数组中并求数组中的所有元素的最大值最小值,平均值以及各个元素之和
- 读入文本文件data.txt中的整数,调用sort()对数组arr元素排序,最后显示出来
- 百度面试题:求一个已排序的数组中绝对值最小的元素
- 求一个已排序的数组中绝对值最小的元素
- 从三个排好序的整数数组中分别选一个元素,使得这三个元素的最大差最小
- 用C随机产生的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。