排序算法

 

  1. 冒泡排序

1、第一种

int temp;

for (int i = 0; i < list.Count - 1; i++)

{

for (int j = 0; j < list.Count - i - 1; j++)

{

if (list[j] > list[j + 1])

{

temp = list[j];

list[j] = list[j + 1];

list[j + 1] = temp;

}

}

}

 

2、第二种(相对比较高效)

int temp;

for (int i = 0; i < list.Count - 1; i++)

{

bool flag = true;

for (int j = 0; j < list.Count - i - 1; j++)

{

if (list[j] > list[j + 1])

{

temp = list[j];

list[j] = list[j + 1];

list[j + 1] = temp;

flag = false;

}

}

if (flag == true)

{

break;

}

}

 

  1. 选择排序

//要遍历的次数

for (int i = 0; i < list.Count - 1; i++)

{

//假设k的下标的值最小

int k = i;

for (int j = i + 1; j < list.Count; j++)

{

//如果k下标的值大于j下标的值,则记录较小值下标j

if (list[k] > list[j])

k = j;

}

//最后将假想最小值跟真的最小值进行交换

if (k != i)

{

var tempData = list[k];

list[k] = list[i];

list[i] = tempData;

}

}

 

  1. 插入排序

//无序序列

for (int i = 1; i < list.Count; i++)

{

var temp = list[i];

int j;

//有序序列

for (j = i - 1; j >= 0 && temp < list[j]; j--)

{

list[j + 1] = list[j];

}

list[j + 1] = temp;

}

 

posted @ 2013-07-16 22:17  小蝎莫慌  阅读(174)  评论(0编辑  收藏  举报