选择排序-二元选择排序
来源:互联网 发布:vnc mac版远程控制软件 编辑:程序博客网 时间:2024/05/17 01:16
***************主方法
/// <summary>
/// 二元选择排序-选择排序
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="array"></param>
/// <param name="n"></param>
public void BinarySelectionSorting(T[] array, int n)
{
int max, min;
T temp;///临时变量
for (int i = 0; i <= n /2; i++)
{
max = n - i-1;
min = i;
for (int j = i+1; j <= n-i-1; j++)
{///在未排序的区域进行最大值最小值判断
if (CompareTo(array[max],array[min])==-1)
{///判断最大值若小于最小值,则互换
temp=array[max];
array[max] = array[min];
array[min] = temp;
}
if (CompareTo(array[j], array[min]) == -1)
{///获取最小值下标
min = j;
}
if (CompareTo(array[j], array[max]) == 1)
{///获取最大值下标
max = j;
}
}
///将最小最大值换到对应位置上
temp = array[i];
array[i] = array[min];
array[min] = temp;
temp = array[n - i - 1];
array[n - i - 1] = array[max];
array[max] = temp;
///打印
PrintArray(array, n, i);
}
}
************************************************
/// <summary>
/// 打印数组元素
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="array"></param>
/// <param name="n"></param>
/// <param name="i"></param>
public void PrintArray(T[] array, int n, int i)
{
Console.WriteLine("当前i:" + i);
for (int j = 0; j <n; j++)
{
Console.Write(array[j].ToString()+",");
}
Console.WriteLine("");
}
**************************************************
/// <summary>
/// 比较泛型值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t1"></param>
/// <param name="t2"></param>
/// <returns></returns>
public int CompareTo(T t1,T t2)
{
if (Convert.ToDouble(t1) > Convert.ToDouble(t2))
{
return 1;
}
else if(Convert.ToDouble(t1) < Convert.ToDouble(t2))
{
return -1;
}
else
{
return 0;
}
}
参考自:http://blog.csdn.net/hguisu/article/details/7776068
感觉他的二元选择排序有问题,优化了下,亲自测试,可以用
- 选择排序-二元选择排序
- 二元选择排序法
- 二元选择排序
- 二元选择法排序
- 二元选择排序
- 二元选择排序
- 二元选择排序
- 二元选择排序
- 选择排序改进(二元选择排序)
- 简单选择排序和二元选择排序
- 排序算法之二元选择排序
- 八大排序算法之二元选择排序
- 排序算法——二元选择排序
- 简单选择排序的改进——二元选择排序
- 简单选择排序和二元选择排序的代码实现
- OJ刷题之《二元选择排序》
- 刷题——二元选择排序
- 算法基础之----二元选择排序
- spring mvc 线程安全问题说明
- Android SharedPreferences一个很好的封装类
- HTTP协议
- struts2中的跳转详解 ----“请求转发”和“重定向”之间的区别
- 操作系统概念(第十一章) 文件系统实现
- 选择排序-二元选择排序
- Intent
- Android NDK中数据类型传递使用
- struts2文件上传/下载(附源代码)
- 记录对String.format(Formatter().format())方法的总结
- The Java Programming Language4th读书笔记-第二章 类与对象
- KeUserModeCallback用法详解
- FragmentTransition
- quick cocos 截屏并保存