选择 (从小到大排序)
int a[5] = {5,4,3,2,1};
a[0] a[1] a[2] a[3] a[4]
5 4 3 2 1
1 5 4 3 2 第一轮比较(拿a[0]和后面的元素依次比较 如果a[0]>a[i]那么两个数交换)
1 2 5 4 3 (第二轮比较,拿a[1]和后面的元素依次比较,如果a[1]>a[i]那么两个数交换)
1 2 3 5 4 第三轮 拿a[2]
1 2 3 4 5 第四轮 拿a[3]和后面的比较
*/
//用一个外循环控制比较的轮次
int main(int argc, const char * argv[])
{
int a[5] = {5,2,3,4,1};//要求从小到大排序
//选择排序从小到大排序模板
for (int i = 0; i < 5-1; i++) {//控制轮次
//内循环控制比较的过程
for (int j = i+1; j < 5; j++) {
if (a[i] > a[j]) {//a[i] < a[j]降序
int tmp;
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
return 0;
}
冒泡 (从小到大排序)
始终从第一个元素开始依次拿相邻的两个数进行比较,把大的放后面(如果前面的元素大 那么就和后面的进行交换)
冒泡 (从小到大排序)
int a[5] = {5,4,3,2,1};
a[0] a[1] a[2] a[3] a[4]
5 4 3 2 1
4 3 2 1 5 第一轮比较(从a[0]开始依次拿相邻两个数比较 如果前面的大于后面的(a[j] > a[j+1])那么两个数交换)
3 2 1 4 5 (第二轮比较,从a[0]开始依次拿相邻两个数比较 如果前面的大于后面的(a[j]>a[j+1])那么两个数交换)
2 1 3 4 5 第三轮(从a[0]开始依次拿相邻两个数比较 如果前面的大于后面的(a[j]>a[j+1])那么两个数交换)
1 2 3 4 5 第四轮
*/
//i = 0 4
//i = 1 3
//i = 2 2
//i = 3 1
//i+ 内循环的次数 = 5-1
//冒泡排序的模板 从小到大 升序的模板
int main(int argc, const char * argv[])
{
int a[5] = {5,4,3,2,1};
for (int i = 0; i < 5-1; i++) {
for (int j = 0; j < 5-1-i; j++) {
if (a[j] > a[j+1]) {//a[j]<a[j+1]降序
int tmp;
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
return 0;
}