排序算法收集
选择算法:
算法的步骤如下:
1)、先假设A[1]中的数最小,记下此时的位置P=1;
2)、依次把A[P]和A[I](I从2变化到10)进行比较,每次比较时,若A[I]的数比A[P]中的数小,则把I的值赋给P,使P总是指向当前所扫描过的最小数的位置,也就是说A[P]总是等于所有扫描过的数最小的那个数。在依次一一比较后,P就指向10个数中最小的数所在位置,即A[P]就是10个数中最小的那个数;
3)把A[P]和A[1]的数对调,那么最小的数就在A[1]中去了,也就是在最前面了。
public int[] Sort(int[] arr)
{
for (int i = 0; i < arr.Length - 1; i++)
{
int min = i;
for (int j = i + 1; j < arr.Length; j++)
{
if (j - 1 > 0)
{
if (arr[j - 1] < arr[min])
{
min = j - 1;
}
int t = arr[min];
arr[min] = arr[i];
arr[i] = t;
}
}
}
return arr;
}
冒泡算法:
(1)从数组A[1]到A[10],把相临的两个数两两进行比较。即A[1]和A[2]比较,比较完后A[2]再与A[3]比较,……最后是A[9]和A[10]比较。
(2)在每次进行比较的过程中,如果前一个数比后一个数大,则对调两个数,也就是说把较大的数调到后面,较小的调到前面。比如在第一次的比较中,如果A[1]比A[2]大则A[1]和A[2]的值就互换。下图用6个数据来说明以上的算法。
假设6个数据是:A[]=5 7 4 3 8 6
A[1] A[2] A[3] A[4] A[5] A[6]
5 7 4 3 8 6 第一次,A[1]=5和A[2]=7比较,7>5,不进行对调。
5 7 4 3 8 6 第二次,A[2]=7和A[3]=4比较,4<7,进行对调,
那么第二次比较完后的数据是5 4 7 3 8 6
5 4 7 3 8 6 第三次,A[3]=7和A[4]=3比较,3<7,进行对调,
那么第三次比较完后的数据是5 4 3 7 8 6
5 4 3 7 8 6 第四次,A[4]=7和A[5]=8比较,8>7,不进行对调。
5 4 3 7 8 6 第五次,A[6]=6和A[5]=8比较,6<8,进行对调,
那么第五次也就是最后一次的结果是
5 4 3 7 6 8
private int[] sort(int[] m)
{
for (int i = 0; i < m.Length-1; i++)
{
for (int j = i + 1; j < m.Length; j++)
{
if (m[j] < m[i])
{
int temp = m[i];
m[i] = m[j];
m[j] = temp;
}
}
}
return m;
}