汇报战况: 前一段时间,我在此寻求各种算法,这里的高人给了我及时的帮助,现在我呢, 算法算是有眉目了,写点自 己的东西,一是总结,二,是帖出来给需要帮助的人看看! 用C#写的选择算法,至于 思想 策略很简单,
现在感觉 一个道理 写程序必须做到“了然于胸”,
在写任何程序之前,一定要在心里了解它的思想,逻辑,怎么实现的,然后再写呢 ! 就是考虑用什么语言实现的事了! 选择算法,顾名思义,关键就是选择一个被比较的数据! 怎么选?是任意的, 那………… 下面我是选第一个视为最小的(为什么选第一个?简单,通用嘛!事实证明简单的东西就是最好的东 西!!),用两个for循环,外层控制循环次数,内部循环扫描数据用来找比第一个更小的数,找到了记下它的下标(叫索引也行)就交换。下面代码经过测试是可以运行的!using System;
public class SelectionSort
{
private int i;
private int j;
private int min;
private int temp; public void Sort(int[] List)
{
for(i=0; i<=List.Length-1;i++)
{
min=i;
for(j=i+1;j<List.Length; j++)
{
if (List[j]<List[min])
min=j;
}
temp=List[min];
List[min]=List[i];
List[i]=temp; }
}
public class MainClass
{
public static void Main()
{
int[] iArrary=new int[]{1,5,3,6,10,55,9,2,87,12,34,75,33,47};
SelectionSort Sort = new SelectionSort();
Sort.Sort(iArrary);
for(int m=0; m<iArrary.Length ;m++)
Console.Write(iArrary[m]+ " ");
}
}
}
解决方案 »
- 医院设备科模块
- c#程序中怎么在word文档中输入下标字符
- 如何实现C语言的printf??
- c++ 写的dll 导出 函数 xx_send(char* buf,int size),在 c#中怎么用
- 请帮我一下..把下列XML语言封装成类或者结构体 里面应该有个结构体变量 不知道怎么封装了
- 关于数据保存的问题
- 【200分】紧急求助高手,为何Remoting不能正常连接?
- ViewState中放XmlDocument对象如何使用?谢谢!
- 大虾请进。。一个关于数据库的问题!
- C#与XML,VB.net,ASP.net的结合应用
- Outlook的启动问题..(Visual Studio 2003中的Add-in问题)
- .net版本问题(帮帮忙!!)
using System;namespace sort
{
/// <summary>
/// sort の概要の説明です。
/// </summary>
public class sort
{
public int low;
public int high;
public int[] A; public void QuickSort(int[] A, int low , int high)
{
if(low<high)
{
int pivotpos=Partition(A ,low , high) ; QuickSort(A, low , pivotpos-1);
QuickSort(A, pivotpos+1 ,high);
}
}
public int Partition(int[] A,int low ,int high) {
int i=low ;
int j=high; int pivot =A[i]; // 用区?的第 1 个??作?基准 '
while(i!=j)
{
while (i<j&&A[j]>=pivot) //pivot 相当于在位置 i 上
j--; // 从右向左?描,?找第 1 个??字小于 pivot.key 的?? low[j]
if(i<j) // 如果找到一个小于pivot的数;
A[i++]=A[j]; //low[i]和low[j]交?后,i指?加1;
while(i<j&&A[i]<=pivot) //pivot 相当于在位置 j 上
i++; // 从左向右?描,?找第 1 个??字大于 pivot 的??low[i]
if(i<j) // 如果找到一个大于pivot的数;
A[j--]=A[i]; // 相当于交? low[i] 和 low[j] ,交?后 j 指?? 1
}
A[i]=pivot; // 基准??已被最后定位
return i ;
}
public class MainClass {
public static void Main() {
int[] A = new int[]{9,8,7,3,35,5,3,21,1,57,2,123,4,0}; sort S = new sort();
S.QuickSort(A ,0,13);
for(int m=0; m<14;m++)
Console.Write(A[m]+ " ");
}
} }
}