
用c#控制台编写,要求用选择排序法,输入任意长度(n, n<100)个数据(int即可),按照升序顺序输出。
2个回答
展开全部
感觉用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同理
}
}
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同理
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询