主题:急,请教高手,如何将C++描述的小程序转换为C#描述?
请将转换后的文件发送到我的E-mail: wang_yong@126.com 万分感谢!
排序算法:
#include“iostream.h”
#define MaxSize 100
typedef int DataType;
class SeqList
{
DataType list[MaxSize];
int length;
public:
SeqList(){length = 0;}
void SLCreat(int n);//创建顺序表
void InsSort(); //直接插入排序
void ShellSort(); //希尔排序
void SelectSort(); //简单选择排序
void BubbleSort(); //冒泡排序
void QuickSort(); //快速排序
void QuickSort(int low,int high);//快速排序
int partition(int i,int j);
void SLPrint(); //将顺序表显示在屏幕上
};
//创建顺序表
void SeqList::SLCreat(int n);
{
DataType x;
length = 0;
cout <<“请输入数据元素值:”;
for(int i = 0;i < n;i++)
{
cin >> x;
list[i] = x;
length++;
}
}
//直接插入排序
void SeqList::InsSort()
{
SLCreat(5);
DataType x;
int i,j;
for(i = 0;i < length;i++)
{
x = list[i];
for(j = i-1;j >= 0;j--)
if(x < list[j])
list[j+1] = list[j];
else
break;
list[j+1] = x;
}
cout <<“直接插入排序结果:”;
SLPrint();
}
//希尔排序
void SeqList::ShellSort()
{
SLCreat(5);
DataType x;
int I,j,d,n;
n = length;
for(d = n/2;d >= 1;d/= 2)
{ //按不同分量进行排序
for(i = d;i < n;i++)
{ //将list[i]元素直接插入到对应分组的有序表中
x = list[i];
for(j = I-d;j >= 0;j-= d)
{
if(x < list[j])
list [j+d] = list[j];
else
break;
}
list[j+d] = x;
}
}
cout <<“希尔排序结果:”;
SLPrint();
}
//简单选择排序
void SeqList::SelectSort()
{
SLCreat(5);
DataType x;
int i,j,k;
for(i = 0;i < length;I++)
{
k = i;//用保存当前得到的最小排序码元素的下标,初值为I
for(j = i+1;j < length;j++)
{ //从当前排序区间中顺序查找出具有最小排序码的元素list[k]
if(list[j]<list[k])
k = j;
}
if(k!=I)
{ //把list[k]对调到该排序区间的第一个位置
x = list[i];
list[i] = list[k];
list[k] = x;
}
}
cout <<“简单选择排序结果:”;
SLPrint();
}
//冒泡排序
void SeqList::BubbleSort()
{
SLCreat(5);
DataType x;
int i,j,flag;
for(i = 1;i < length-1;iI++)
{
flag = 0;
for(j = length-1;j >= i;j--)
if(list[j] < list[j-1])
{
x = list[j-1];
list[j-1] = list[j];
list[j] = x;
flag = 1;
}
if(flag == 0)return;
}
cout <<“冒泡排序结果:”;
SLPrint();
}
//快速排序
void SeqList::QuickSort()
{
SLCreat(5);
QuickSort(0,4);
cout <<“快速排序结果:”;
SLPrint();
}
//快速排序
void SeqList::QuickSort(int low,int high)
{
int pos;
if(low < high)
{
pos = partition(low,high);
QuickSort(low,pos-1);
QuickSort(pos+1,high);
}
}
int SeqList::partition(int I,int j)
{
DataType pivotkey;
pivotkey = list[i];
while(i < j)
{
while(i < j&&list[j] >= pivotkey) --j;
if(i < j)list[i++] = list[j];
while(i < j&&list[i] <= pivotkey) ++i;
if(i < j)list[j--] = list[i];
}
list[i] = pivotkey;
return i;
}
//将顺序表显示在屏幕上
void SeqList::SLPrint()
{
for(int i = 0;i < length;i++)
cout << list[i] <<“”;
cout << endl;
}
void main()
{
SeqList myList1,myList2,myList3,myList4,myList5;
int ch,flag = 1;
while(flag)
{
cout << endl;
cout <<“1. 直接插入排序\n”;
cout <<“2. 希尔排序\n”;
cout <<“3. 简单选择排序\n”;
cout <<“4. 冒泡排序\n”;
cout <<“5. 快速排序\n”;
cout <<“6. 退出\n”;
cout <<“请选择(1-6):”;
cin >> ch;
switch(ch)
{
case 1: myList1.InsSort();break;
case 2: myList2.ShellSort();break;
case 3: myList3.SelectSort();break;
case 4: myList4.BubbleSort();break;
case 5: myList5.QuickSort();break;
case 6: flag = 0;break;
}
}
}
排序算法:
#include“iostream.h”
#define MaxSize 100
typedef int DataType;
class SeqList
{
DataType list[MaxSize];
int length;
public:
SeqList(){length = 0;}
void SLCreat(int n);//创建顺序表
void InsSort(); //直接插入排序
void ShellSort(); //希尔排序
void SelectSort(); //简单选择排序
void BubbleSort(); //冒泡排序
void QuickSort(); //快速排序
void QuickSort(int low,int high);//快速排序
int partition(int i,int j);
void SLPrint(); //将顺序表显示在屏幕上
};
//创建顺序表
void SeqList::SLCreat(int n);
{
DataType x;
length = 0;
cout <<“请输入数据元素值:”;
for(int i = 0;i < n;i++)
{
cin >> x;
list[i] = x;
length++;
}
}
//直接插入排序
void SeqList::InsSort()
{
SLCreat(5);
DataType x;
int i,j;
for(i = 0;i < length;i++)
{
x = list[i];
for(j = i-1;j >= 0;j--)
if(x < list[j])
list[j+1] = list[j];
else
break;
list[j+1] = x;
}
cout <<“直接插入排序结果:”;
SLPrint();
}
//希尔排序
void SeqList::ShellSort()
{
SLCreat(5);
DataType x;
int I,j,d,n;
n = length;
for(d = n/2;d >= 1;d/= 2)
{ //按不同分量进行排序
for(i = d;i < n;i++)
{ //将list[i]元素直接插入到对应分组的有序表中
x = list[i];
for(j = I-d;j >= 0;j-= d)
{
if(x < list[j])
list [j+d] = list[j];
else
break;
}
list[j+d] = x;
}
}
cout <<“希尔排序结果:”;
SLPrint();
}
//简单选择排序
void SeqList::SelectSort()
{
SLCreat(5);
DataType x;
int i,j,k;
for(i = 0;i < length;I++)
{
k = i;//用保存当前得到的最小排序码元素的下标,初值为I
for(j = i+1;j < length;j++)
{ //从当前排序区间中顺序查找出具有最小排序码的元素list[k]
if(list[j]<list[k])
k = j;
}
if(k!=I)
{ //把list[k]对调到该排序区间的第一个位置
x = list[i];
list[i] = list[k];
list[k] = x;
}
}
cout <<“简单选择排序结果:”;
SLPrint();
}
//冒泡排序
void SeqList::BubbleSort()
{
SLCreat(5);
DataType x;
int i,j,flag;
for(i = 1;i < length-1;iI++)
{
flag = 0;
for(j = length-1;j >= i;j--)
if(list[j] < list[j-1])
{
x = list[j-1];
list[j-1] = list[j];
list[j] = x;
flag = 1;
}
if(flag == 0)return;
}
cout <<“冒泡排序结果:”;
SLPrint();
}
//快速排序
void SeqList::QuickSort()
{
SLCreat(5);
QuickSort(0,4);
cout <<“快速排序结果:”;
SLPrint();
}
//快速排序
void SeqList::QuickSort(int low,int high)
{
int pos;
if(low < high)
{
pos = partition(low,high);
QuickSort(low,pos-1);
QuickSort(pos+1,high);
}
}
int SeqList::partition(int I,int j)
{
DataType pivotkey;
pivotkey = list[i];
while(i < j)
{
while(i < j&&list[j] >= pivotkey) --j;
if(i < j)list[i++] = list[j];
while(i < j&&list[i] <= pivotkey) ++i;
if(i < j)list[j--] = list[i];
}
list[i] = pivotkey;
return i;
}
//将顺序表显示在屏幕上
void SeqList::SLPrint()
{
for(int i = 0;i < length;i++)
cout << list[i] <<“”;
cout << endl;
}
void main()
{
SeqList myList1,myList2,myList3,myList4,myList5;
int ch,flag = 1;
while(flag)
{
cout << endl;
cout <<“1. 直接插入排序\n”;
cout <<“2. 希尔排序\n”;
cout <<“3. 简单选择排序\n”;
cout <<“4. 冒泡排序\n”;
cout <<“5. 快速排序\n”;
cout <<“6. 退出\n”;
cout <<“请选择(1-6):”;
cin >> ch;
switch(ch)
{
case 1: myList1.InsSort();break;
case 2: myList2.ShellSort();break;
case 3: myList3.SelectSort();break;
case 4: myList4.BubbleSort();break;
case 5: myList5.QuickSort();break;
case 6: flag = 0;break;
}
}
}