protected void Page_Load(object sender, EventArgs e)
{
}
//它的原理就是相邻的两个两个的比较,如果前面的数比后面的大,那么交换,它这个在比较完一次的时候可以得到最大的一个数,然后接着循环,每次外循环中内循环的次数比原来少一次。
protected void btn_MaoPao_Click(object sender, EventArgs e)
{
int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
for (int i = 0; i < arr.Length; i++)
{
for (int j = 0; j < arr.Length - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int k = 0; k < arr.Length; k++)
{
Response.Write(arr[k].ToString() + "<br />");
}
}
//选择排序 向后冒泡获取最小值得索引保存最小值MinIndex ,然后和第i个值进行数据交换
protected void btn_Select_Click(object sender, EventArgs e)
{
int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
int minIndex = 0;
for (int i = 0; i < arr.Length; i++)
{
minIndex = i;
for (int j = i; j < arr.Length; j++)
{
if (arr[j] < arr[minIndex])
{
minIndex = j;
}
}
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
for (int k = 0; k < arr.Length; k++)
{
Response.Write(arr[k].ToString() + "<br />");
}
}
//插入排序
//此种算法是一次循环每一个元素,然后在每一个为基值再一次循环小于基值的每一个元素,
protected void btn_Insert_Click(object sender, EventArgs e)
{
int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
for (int i = 0; i < arr.Length; i++)
{
int temp = arr[i];
int j = i;
while (j > 0 && arr[j - 1] > temp)
{
arr[j] = arr[j - 1];
--j;
}
arr[j] = temp;
}
for (int k = 0; k < arr.Length; k++)
{
Response.Write(arr[k].ToString() + "<br />");
}
}
protected void btn_Fast_Click(object sender, EventArgs e)
{
int[] arr = new int[] { 56, 12, 34, 45, 22, 34, 56, 23, 45, 67 };
quick_sort(arr, 0, arr.Length - 1);
for (int k = 0; k < arr.Length; k++)
{
Response.Write(arr[k].ToString() + "<br />");
}
}
//快速排序 //从右向左找第一个小于x的数 //从左向右找第 一个大于x的数
private void quick_sort(int[] s, int l, int r)
{
if (l < r)
{
int i = l, j = r, x = s[l];
while (i < j)
{
while (i < j && s[j] >= x)//从右向左找第一个小于x的数
{
j--;
}
if (i < j)
{
s[i] = s[j];
i++;
}
while (i < j && s[i] < x)//从左向右找第 一个大于x的数
{
i++;
}
if (i < j)
{
s[j] = s[i];
j--;
}
}
s[i] = x;
quick_sort(s, l, i - 1);
quick_sort(s, i + 1, r);
}