一、准备知识
数组逆序 //数组中的元素值 发生变化
i j
0 1 2 3 4 5 6 7 8 9 //下标
1 2 3 4 5 6 7 8 9 10 //数值
-->逆序
0 1 2 3 4 5 6 7 8 9 //下标
10 9 8 7 6 5 4 3 2 1 //数值
关系:
i <=> 数组长度 - 1 - i
换到什么时候停!
实现两个数交换:
a = 10;
b = 20;
c = a;
a = b;
b = c; //交换方法
----------------------------
排 序:
升序 1 2 3 4 5 6
降序 6 5 4 3 2 1
二、选择排序:
思想:
给合适位置,(选择)合适的数放
for (i = 0; i < n-1; ++i) // 控制位置 (a[0]-----a[n - 2]),前n-1个元素排序结束,第n个元素自然确定
{
for (j = i + 1; j < n; ++j) //对当前位置的a[0] (0,1,2,3,...n)同其自己后面的所有元素比较,每次将小的结果放在低位 i
{
if (a[i] > a[j])
{
交换
}
}
}
冒泡:
for (i = 1; i < n; ++i) //控制趟数
{
for (j = 0; j < n-i; ++j) //从a[ j ] 开始比较其后面的 a[j + 1].... 到a[n - i -1],将最大的放高位
{
if (a[j] > a[j+1])
{
交换
}
}
}
三、插入排序
原数列a[ ]
新数列b [ ]
首先将a[ 0 ]放入b[ 0 ]中
然后a[1 ]通过比较a[0],如果a[0]大则,a[0]放高位,a[ 1]放低位,依次类推