您的位置:首页 > 其它

快速、选择、冒泡排序算法

2011-01-27 13:58 176 查看
protected void Button1_Click(object sender, EventArgs e)
{
int[] arr=new int[100];
Random rd=new Random();
for(int i=0;i<100;i++)
{
arr[i] = rd.Next(1,1000);
}

// QuickSort(arr,0,arr.Length-1);

// SelectSort(arr);

BubbleSort(arr);

string str="";
for (int i = 0; i < arr.Length; i++)
{
str = str + arr[i] + ",";
}
this.TextBox1.Text = str;
}

/// <summary>
/// 快速排序法,从小到大排序
/// </summary>
/// <param name="arrList"></param>
/// <param name="left"></param>
/// <param name="right"></param>
private void QuickSort(int[] arrList,int left,int right)
{
int arrlen = arrList.Length;
int i = left, j = right;
if (i > j) return;
//以第一个数为参照做比较
int key = arrList[i];
while (i<j)
{
//从后向前判断
while (i < j)
{
if (key > arrList[j])
{
arrList[i] = arrList[j];
i++;
break;
}
j--;
}
//从前向后判断
while (i < j)
{
if (key < arrList[i])
{
arrList[j] = arrList[i];
j--;
break;
}
i++;
}
}
arrList[i] = key;
QuickSort(arrList, left, i - 1);

QuickSort(arrList, i+1,right);
}

/// <summary>
/// 选择排序法,从小到大排序
/// </summary>
/// <param name="arrList"></param>
private void SelectSort(int[] arrList)
{
int min;

for (int i = 0; i < arrList.Length - 1; i++)
{
min = i;
for (int j = i + 1; j < arrList.Length; j++)
{
if (arrList[min] > arrList[j])
{
min = j;
}
}
int tmp = arrList[i];
arrList[i] = arrList[min];
arrList[min] = tmp;
}
}
/// <summary>
/// 冒泡排序法,从小到大排序
/// </summary>
/// <param name="arrList"></param>
public void BubbleSort(int[] arrList)
{
for (int i = 0; i < arrList.Length; i++)
{
for (int j = 0; j < arrList.Length - 1; j++)
{
if (arrList[j] > arrList[j + 1])
{
int tmp = arrList[j];
arrList[j] = arrList[j + 1];
arrList[j + 1] = tmp;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: