给一个整数数组,对数组中的每个整数中的所有数字按照升序排列(如101排序后为011)请写一个方法,输出排序后的数组中的最大数。 例如有一个数组: 101、132、375,排序后11、123、357,
2014-11-06 23:56
966 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
namespace Training.ArraySort
{
class Program
{
static void Main(string[] args)
{
int[] IntArray = new int[10]; // 存放位排序后的整数
int IntNum = 0; // 存放合法输入的整数的个数
Boolean GoEnter = true; // 是否继续输入
while (GoEnter)
{
Console.WriteLine("每输入一个整数后回车,停止输入请输入Q:");
string strInt = Console.ReadLine();
if (IntNum > 9 || (strInt == "Q")) // 输入个数超过9个或输入Q时结束,防止越界
{
Console.WriteLine("输入结束!");
GoEnter = false;
}
else
{
if(IsInteger(strInt)) // 判断输入的是否是合法整数
{
char[] c = strInt.ToCharArray();
IntArray[IntNum++]=SortChar(c); // 整数各个位按升序排序
}
else
{
Console.WriteLine("请正确输入整数:"); //输入不合法
}
}
}
SortArray(IntArray); //升序排序后的各个整数比较大小(冒泡)
Console.WriteLine("排序后的数组是:");
#region 输出排序后的数组
for (int i = 0; i < IntArray.Length; i++)
{
if (IntArray[i] != 0)
{
Console.WriteLine(+IntArray[i]);
}
}
#endregion
Console.WriteLine("排序后数组中的最大数是:");
Console.WriteLine(IntArray[IntArray.Length - 1]) ;//排序后的最后一个就是最大值
Console.ReadKey();
}
#region IsInteger()判断是否为合法整数
private static bool IsInteger(string s)
{
string pattern = @"^\d*$";
return Regex.IsMatch(s, pattern);
}
#endregion
#region SortChar() 对输入的整数的各个位排序并去掉前面的0
private static int SortChar(char[] arr)
{
char[] end = new char[arr.Length];
int N = 0;
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
char temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < arr.Length; i++)//去掉前面的0
{
if (arr[i]!='0')
{
end[N++] = arr[i];
}
}
String ch2str = new String(arr);
return (int.Parse(ch2str));
}
#endregion
#region SortArray()各个位按升序拍好后比较大小
private static int[]SortArray(int[] arr)
{
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return(arr);
}
#endregion
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
namespace Training.ArraySort
{
class Program
{
static void Main(string[] args)
{
int[] IntArray = new int[10]; // 存放位排序后的整数
int IntNum = 0; // 存放合法输入的整数的个数
Boolean GoEnter = true; // 是否继续输入
while (GoEnter)
{
Console.WriteLine("每输入一个整数后回车,停止输入请输入Q:");
string strInt = Console.ReadLine();
if (IntNum > 9 || (strInt == "Q")) // 输入个数超过9个或输入Q时结束,防止越界
{
Console.WriteLine("输入结束!");
GoEnter = false;
}
else
{
if(IsInteger(strInt)) // 判断输入的是否是合法整数
{
char[] c = strInt.ToCharArray();
IntArray[IntNum++]=SortChar(c); // 整数各个位按升序排序
}
else
{
Console.WriteLine("请正确输入整数:"); //输入不合法
}
}
}
SortArray(IntArray); //升序排序后的各个整数比较大小(冒泡)
Console.WriteLine("排序后的数组是:");
#region 输出排序后的数组
for (int i = 0; i < IntArray.Length; i++)
{
if (IntArray[i] != 0)
{
Console.WriteLine(+IntArray[i]);
}
}
#endregion
Console.WriteLine("排序后数组中的最大数是:");
Console.WriteLine(IntArray[IntArray.Length - 1]) ;//排序后的最后一个就是最大值
Console.ReadKey();
}
#region IsInteger()判断是否为合法整数
private static bool IsInteger(string s)
{
string pattern = @"^\d*$";
return Regex.IsMatch(s, pattern);
}
#endregion
#region SortChar() 对输入的整数的各个位排序并去掉前面的0
private static int SortChar(char[] arr)
{
char[] end = new char[arr.Length];
int N = 0;
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
char temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < arr.Length; i++)//去掉前面的0
{
if (arr[i]!='0')
{
end[N++] = arr[i];
}
}
String ch2str = new String(arr);
return (int.Parse(ch2str));
}
#endregion
#region SortArray()各个位按升序拍好后比较大小
private static int[]SortArray(int[] arr)
{
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return(arr);
}
#endregion
}
}
相关文章推荐
- 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,
- 定义一个一维数组,其元素个数从键盘中输入,元素的值为[100,200]的随机整数。 (1)输出数组的每个数 (2)对数组的数进行升序排序,输出排序后的数组元素 (3)从键盘上输入一个整数,查找该整数是
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 输入字符串,内有数字和非字符数组,例如A123x456将其中连续的数字作为一个整数,依次存放到一个数组中,如123放到a[0],456放到a[1],并输出a这些数
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3
- java—数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。
- 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。
- 现有一个n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,即将5和4交换即可。
- 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132