问题描述
刚开始学习c#,给位前辈帮帮忙!求源码!给一个整数数组,对数组中的每个整数中的所有数字按照升序排列(如101排序后为011)请写一个方法,输出排序后的数组中的最大数。例如有一个数组:101、132、375,排序后011、123、357,所以其中最大的数是357要求:1.程序能正常的输入输出,功能完成。2.考察排序算法,如果能自己实现冒泡或其他排序算法最好,其次是调用C#自带排序算法。3.程序能够容错,有输入检查、数组越界检查等,程序具有健壮性。
解决方案
解决方案二:
int[]lstint=newint[3]{101,132,375};List<int>lsts=newList<int>();char[]chr;foreach(intiteminlstint){chr=item.ToString().ToCharArray().OrderBy(p=>p).ToArray();lsts.Add(Convert.ToInt32(newstring(chr)));}intmax=lsts.Max();
异常什么的楼主自己处理下
解决方案三:
大哥能写出算法吗不想用封装的方法
解决方案四:
最简单你把排序和最大值的地方改成算法不就行了,排序算法网上一大堆,虽然不是最高效,凑合用完全不是问题
解决方案五:
这个101变为011很特别,这涉及到按位取数并作取舍,不过011是什么意思?难道不是11?初学者最好自己动手
解决方案六:
对数组进行升序排序privateint[]G_int_value;//定义数组字段privateRandomG_Random=newRandom();//创建随机数对象privatevoidbtn_sort_Click(objectsender,EventArgse){if(G_int_value!=null){intmin;//定义一个int变量,用来存储数组下标for(inti=0;i<G_int_value.Length-1;i++)//循环访问数组中的元素值(除最后一个){min=i;//为定义的数组下标赋值for(intj=i+1;j<G_int_value.Length;j++)//循环访问数组中的元素值(除第一个){if(G_int_value[j]<G_int_value[min])//判断相邻两个元素值的大小min=j;}//codego.net/1/1/1/intt=G_int_value[min];//定义一个int变量,用来存储比较大的数组元素值G_int_value[min]=G_int_value[i];//将小的数组元素值移动到前一位G_int_value[i]=t;//将int变量中存储的较大的数组元素值向后移}txt_str2.Clear();//清空控件内字符串foreach(intiinG_int_value)//遍历字符串集合{txt_str2.Text+=i.ToString()+",";//向控件内添加字符串}}else{MessageBox.Show("首先应当生成数组,然后再进行排序。","提示!");}}