用c#控制台编写,要求用选择排序法,输入任意长度(n, n<100)个数据(int即可),按照升序顺序输出。

 我来答
百度网友6205bc1
2009-08-18 · TA获得超过6004个赞
知道大有可为答主
回答量:5933
采纳率:20%
帮助的人:2840万
展开全部
感觉用C#写选择排序,没多大意义
class Program
{
static int[] arr;
static void Main(string[] args)
{
int num;

while (true)
{
Console.WriteLine("请输入100以内个数字进行排序:");
try
{
num = Convert.ToInt32(Console.ReadLine());//对输入数字进行大小检查
}
catch
{
Console.WriteLine("请输入合法数字\n");
continue;
}
if (num <= 100) break;
else Console.WriteLine("\n请输入小于等于100的数\n");
}
arr = new int[num]; //分配数组大小

//为方便这里不进行判断
Console.WriteLine("\n请输入{0}个数字", num);
for (int i = 0; i < num; ++i)
arr[i] = Convert.ToInt32(Console.ReadLine());

//调用方法
qsort(arr, 0, num - 1);

//输出结果
Console.WriteLine("\n排序结果为:");
for (int i = 0; i < num; ++i)
Console.Write(arr[i] + " ");
}
//快速排序方法
static void qsort(int[] a, int left, int right)
{
int l, r, pivot, temp;

l = left;
r = right;
pivot = a[(l + r) / 2];//取得中间位置的数字

while (l < r)
{
while (a[l] < pivot) ++l; //找左边大于中间位置的数
while (a[r] > pivot) --r; //找右边小于中间位置的数

if (l >= r) break;//遇此情况需退出循环
//将大数与小数进行交换,实现升序排序
temp = a[l];
a[l] = a[r];
a[r] = temp;

if (a[l] != pivot) ++l;
if (a[r] != pivot) --r; //下标改变进行下一轮的比较
}
if (l == r) ++l;
if (left < r) qsort(a, left, l - 1); //r还没移到left的位置,即进行递归
if (l < right) qsort(a, r + 1, right); //与上一个if同理
}
}
skynomadism
2009-08-18 · TA获得超过319个赞
知道小有建树答主
回答量:410
采纳率:100%
帮助的人:171万
展开全部
C#中的选择排序与其它语言的有区别吗?
这种基本的算法,各个语言是一样的吧,除非你用了汇编,看起来好像不好懂,其它的程序是很像的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式