冒泡排序
//每一次冒泡都会把最大的放到最后
/* 第一次
* 第二次 12, 14, 34, 9, 23, 55, 10.5, 8, 84, 90
...
//双循环、外层循环控制趟数、内层循环控制比较次数
//1.比较相邻的元素,如果第一个比第二个大,那么交换位置(右边最大)
//2.对每对相邻的元素做相同的工作,从第一对到结尾的最后一对
//3.针对所有的元素重复以上步骤
//4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
//控制趟数
static void Main(string[] args)
{
double[] bArray = { 12, 90, 14, 84, 34, 9, 23, 55, 10.5, 8 };
for (int i = 0; i < bArray.Length - 1; i++) 外层循环控制趟数
{
for (int j = 0; j < bArray.Length - 1-i; j++) 内层循环控制比较次数
{
if (bArray[j] > bArray[j + 1])
{
double num = bArray[j];
bArray[j] = bArray[j + 1];
bArray[j + 1] = num;
}
}
}
foreach (var item in bArray)
{ Console.WriteLine(item); }
}
Test:
for (i=0,i<barray.Length-1,i++) //i<=barrat.Length-1-i
{
for(j=0,j<=barray.length-1,j++)
{ if b[j]>=b[j+1]
int temp=barray[j];
barray[j]=barrat[j+1];
baart[j+1]=temp
}
选择排序
首先通过n-1次比较,从n个数中找出最小的,将他与第一个数交换,这是第一趟选择排序,最小的数安放在了第一个值。
//在通过n-2次比较,从剩余的n-1个数中找出最小的,将他与第二个数交换,这是第二趟选择排序
//......
//重复上述过程,共经过n-1次
//每一趟都会选择出一个最小值来跟前面相应的元素做交换(相应的元素:第几趟就是第几个元素)
/* 49 38 65 97 76 12 27
* 第一趟
* 12 38 65 97 76 49 27
* 第二趟
* 12 27 65 97 76 49 38
* 第三趟
* 12 27 38 97 76 49 65
* 第四趟
* 12 27 38 49 76 97 65
* 第五趟
* 12 27 38 49 65 97 76
* 第六趟
* 12 27 38 49 65 76 97
*/
int [ ] a={11,22,33,6,55,88}
int min = a[0];
int index=0;
for (int i=0;i<a.Length-1;i++)
{
min=a[i];
index=i;
for(int j=i+1;j<a.Length;j++)
{
if a[j]<min
{
min=a[j];
index=j;
}
}
a[index]=a[i]
a[i]=min;
}