标签:
/**********************************************************/
/*描述:编写程序将10个学生的得分存储到数组中。通过使用冒泡排序算法,来排序数组中的元素,排序数组后,显示排序后数组的元素*/
using System;
class List
{
//定义长度为20的整型数组
private int[]a=new int[20]; //20是最大长度.
//数组的个数
private int n;
//定义一个方法读取数据元素到数组
public void read()
{
//获得
while(true)
{
Console.WriteLine("请输入数组元素的个数<20之内>:");
string s=Console.ReadLine();
n=Int32.Parse(s);//转换为整型.Convert.ToInt32(s)
if(n<=20)
break; //跳出循环
else
Console.WriteLine("\n数组只能够容纳20个数组元素.\n");
}//while结束.
Console.WriteLine("");
Console.WriteLine("----------------------------------");
Console.WriteLine("-----请输入数组元素---------------");
Console.WriteLine("----------------------------------");
//用户将数句元素输入数组
for(int i=0;i<n;i++)
{
Console.Write("<"+(i+1)+">");
string s1=Console.ReadLine();
a[i]=Int32.Parse(s1);
}//<1>20 <2>20 <3>90
}
//*************************显示数组元素*************************
public void display()
{
Console.WriteLine("");
Console.WriteLine("-------------------------------------------");
Console.WriteLine("------------排序过后的元素-----------------");
Console.WriteLine("-------------------------------------------");
for(int j=0;j<n;j++)
{
Console.WriteLine(a[j]);
}
}
/***************冒泡排序方法***************************/
public void BubbleSortArray()
{
//圈数1--->n-1
for(int i=1;i<=n-1;i++) //i:1;不是数组下标,是通道次数
{
//里面做的工作是两个相邻数字的比较;如果不符合升序排列,则交换.j指数组下标.
for(int j=0;j<n-i;j++) //注意:比较n-i次
{
if(a[j]>a[j+1]) //则说明不符合升序排列,需要交换
{
int temp;
temp =a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}//内层交换结束
}//圈数循环结束.
}
/******************Main()方法*********************/
public static void Main(string[]args)
{
List myList=new List();
myList.read(); //读取数据元素
myList.BubbleSortArray(); //调用冒泡排序算法
myList.display(); //显示数组元素
Console.WriteLine("\n\n按任意键退出.");
Console.Read();
}
}/*
描述:使用选择排序,来排列包含10个学生得分的整数数组,升序排列.
*/
using System;
class Selection
{
//定义数组的大小
private int[]a=new int[20];
//数组元素的个数.
private int n;
//定义接受数组元素的函数
void read()
{
while(true)
{
Console.WriteLine("请输入数组元素的个数:");
string s=Console.ReadLine();
n=Int32.Parse(s);
if(n<=20)
break;
else
Console.WriteLine("\n数组只能够接收20个元素.\n");
}
Console.WriteLine("");
Console.WriteLine("---------------------------------");
Console.WriteLine("----------请输入数组元素---------");
Console.WriteLine("---------------------------------");
//用户输入数据
for(int i=0;i<n;i++)
{
Console.Write("<"+(i+1)+">");
string s1=Console.ReadLine();
a[i]=Int32.Parse(s1);
}
}
//显示数组内容的函数
void display()
{
Console.WriteLine("");
Console.WriteLine("---------------------------------");
Console.WriteLine("----------排序后的数组元素-------");
Console.WriteLine("---------------------------------");
for(int j=0;j<n;j++)
{
Console.WriteLine(a[j]);
}
}
/*
选择排序算法:每次选择最小值,将其依次往前排;借助于下标标记来实现.
*/
public void SelectionSortArray()
{
//外面进行了n-1圈
for(int i=0;i<n-1;i++)
{
//定义个指示最小值标记的变量
int min_index=i;
//查找选择最小值所对应的标记(下标)
for(int j=i+1;j<=n-1;j++)
{
//判断如果有值比,最小值下标对应的数还小,则将该值对应的下标给min_index
if(a[j]<a[min_index])
min_index=j;
}//结束寻找最小值下标
//交换:a[i]<-->a[min_index]
swap(i,min_index); //调用交换方法.
}
}
//交换两个值的方法
public void swap(int x,int y)
{
int temp;
temp=a[x];
a[x]=a[y];
a[y]=temp;
}
//类的主方法
public static void Main()
{
Selection sec=new Selection();
sec.read();
sec.SelectionSortArray();
sec.display();
Console.WriteLine("\n\n请按任意键结束!.");
Console.Read();
}
}/*
描述:使用插入排序,来排列包含10个学生得分的整数数组。
*/
using System;
class Insertion
{
//定义数组的大小
private int[]a=new int[20];
//数组元素的个数.
private int n;
//定义接受数组元素的函数
void read()
{
while(true)
{
Console.WriteLine("请输入数组元素的个数:");
string s=Console.ReadLine();
n=Int32.Parse(s);
if(n<=20)
break;
else
Console.WriteLine("\n数组只能够接收20个元素.\n");
}
Console.WriteLine("");
Console.WriteLine("---------------------------------");
Console.WriteLine("----------请输入数组元素---------");
Console.WriteLine("---------------------------------");
//用户输入数据
for(int i=0;i<n;i++)
{
Console.Write("<"+(i+1)+">");
string s1=Console.ReadLine();
a[i]=Int32.Parse(s1);
}
}
//显示数组内容的函数
void display()
{
Console.WriteLine("");
Console.WriteLine("---------------------------------");
Console.WriteLine("----------排序后的数组元素-------");
Console.WriteLine("---------------------------------");
for(int j=0;j<n;j++)
{
Console.WriteLine(a[j]);
}
}
//****使用选择排序的方法
public void InsertionSortArray()
{
//重复n-1次来将为排序列表数据放入已排序列表
for(int i=1;i<n;i++)
{
int temp=a[i];
int j=i-1;
//如果j>=0或大于临时值,则执行如下操作
while((j>=0)&&(a[j]>temp))
{
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}
//交换两个值的方法
public void swap(int x,int y)
{
int temp;
temp=a[x];
a[x]=a[y];
a[y]=temp;
}
//类的主方法
public static void Main()
{
Insertion sec=new Insertion();
sec.read();
sec.InsertionSortArray();
sec.display();
Console.WriteLine("\n\n请按任意键结束!.");
Console.Read();
}
}------------------------------------------------------------------------
/*
描述:使用插入排序,来排列包含10个学生得分的整数数组。
*/
using System;
class ShellSorter
{
//数组元素的个数.
private static int n=0;
//定义数组的大小
private int[]a;
//定义接受数组元素的函数
void read()
{
while(true)
{
Console.WriteLine("请输入数组元素的个数:");
string s=Console.ReadLine();
n=Int32.Parse(s);
a=new int[n];
if(n<=20)
break;
else
Console.WriteLine("\n数组只能够接收20个元素.\n");
}
Console.WriteLine("");
Console.WriteLine("---------------------------------");
Console.WriteLine("----------请输入数组元素---------");
Console.WriteLine("---------------------------------");
//用户输入数据
for(int i=0;i<n;i++)
{
Console.Write("<"+(i+1)+">");
string s1=Console.ReadLine();
a[i]=Int32.Parse(s1);
}
}
//显示数组内容的函数
void display()
{
Console.WriteLine("");
Console.WriteLine("---------------------------------");
Console.WriteLine("----------排序后的数组元素-------");
Console.WriteLine("---------------------------------");
for(int j=0;j<n;j++)
{
Console.Write(" "+a[j]);
}
}
//****使用希尔排序的方法
public void ShellSort()
{
for (int step = a.Length/ 2; step >= 1; step = step / 2)
{
for (int i = step; i < a.Length; i+=step)
{
int temp = a[i];
int j = i - step;
while (j >= 0 && temp < a[j])
{
a[j + step] = a[j];
j-=step;
}
a[j + step] = temp;
}
}
}
//交换两个值的方法
public void swap(int x,int y)
{
int temp;
temp=a[x];
a[x]=a[y];
a[y]=temp;
}
//类的主方法
public static void Main()
{
ShellSorter sec=new ShellSorter();
sec.read();
sec.ShellSort();
sec.display();
Console.WriteLine("\n\n请按任意键结束!.");
Console.Read();
}
}
标签:
原文地址:http://blog.csdn.net/zhangchen124/article/details/51615070