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

如题所述

感觉用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同理
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-18
C#中的选择排序与其它语言的有区别吗?
这种基本的算法,各个语言是一样的吧,除非你用了汇编,看起来好像不好懂,其它的程序是很像的.

用c#写一个程序要求在控制台输入串数字(有小数点),最后以显示人民币的...
1、限制数字:利用ASCII码 2、后两位:截取字符串 substring 3、一万亿,固定个数 下面说主要思路:假如是17046593.23 得到的结果应该是:壹仟柒佰零肆万六仟五佰九拾三元贰角三分 17046593.00 得到的结果应该是:壹仟柒佰零肆万六仟五佰九拾三元整 这当中你会发现几件事:①数字无论几位,他...

如何用c#实现一个按照升序排列的整数序列?
3.接下来,定义一个自定义函数来比较整数序列中任意两个整数的大小。4.定义一个自定义函数,比较整数序列中任意两个数字的序数大小。5.在主函数中,首先定义两个整数,并保存整数个数和排名计数。6.使用for循环输入序列中的整数,并设置序列中每个整数的序列号。7.按整数大小排序的序列中的所有数值...

VB程序设计习题:用选择排序法,利用随机数产生20个1~100的整数,并按照...
Private Sub Command1_Click()Dim arr(1 To 20), i For i = 1 To 20 Randomize arr(i) = Int(Rnd * 101)Next fc arr Print Join(arr, vbNewLine) '自己修改,我是直接打印的可以分开 End Sub Function fc(arr)Dim i, j, t For i = LBound(arr) To UBound(arr) - 1 For j =...

用c# 编写控制台程序,从键盘输入几个中文姓名,然后按名字的拼音进行排序...
static void Main(string[] args) { Console.WriteLine("请连续输入中文姓名,用中文逗号分隔");long iCnChar;string strInput = Console.ReadLine();string[] strNames = strInput.Split(',');Dictionary<string, long> lName = new Dictionary<string, long>();List<long> lCnChar = new ...

用C#控制台应用程序编写一个程序。要求:任意输入两个数并求和。谢谢各位...
可以参考下面的代码:Console.WriteLine("请输入第一个数");int num1 = Convert.ToInt32(Console.ReadLine());Console.WriteLine(" 请输入第二个数");int num2 = Convert.ToInt32(Console.ReadLine());int result = num1 + num2;Conosole.WriteLine(resulrt);Console.ReafKey();...

用c#(windows应用程序)编写一个程序,输入自己的姓名“***”,然后输出...
新建一个Visual C#的Windows应用程序,在窗体上添加一个button和一个textbox,在button里添加以下代码: if (textBox1.Text != ""){ MessageBox.Show("你好," + textBox1.Text);textBox1.Text = "你好," + textBox1.Text;}

编写一个C#控制台应用程序。键盘输入一个n,求n!
static int f(int n){ if (n < 0)throw new ArgumentOutOfRangeException("n");return n <= 1 ? 1 : n * f(n-1);} 这个是用的递归的方法。循环的话更简单 int x = 1;while (n > 1)x *= n--;return x;

如何用c语言实现输入一些数字,按照从大到小排序输出?
用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:include<stdio.h> int main(){ int i,j,a[10],t;printf("输入数");for (i = 0; i < 10; i++)scanf("%d",&a[i]);for (i = 0; i < 10; i++){ for (j = i + 1; j < 10;j...

用c#控制台应用程序,对输入的四个整数,求出其中的最大数和最小数,并...
所以称作冒泡排序。用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i, j的值依次为1,2,...10-i。

C#中,编写控制台应用程序项目,读入一组整数(以输入0结束)分别求出奇偶...
int temp=0;foreach (char c in str){ int i=(Convert.ToInt32(c)-48);if ( i% 2 != 0){ temp += i;} } return temp;} static int jisuanoushuhe(string str){ int temp = 0;foreach (char c in str){ int i = (Convert.ToInt32(c) - 48);if (i % 2 == 0){...

相似回答