一、整数冒泡排序(从小到大):
#include <stdio.h>
int main()
{
int array[] = {7, 15, 2, 9, 6};
// 从小到大冒泡排序
int size = sizeof(array) / sizeof(array[0]); // 数据长度
int sizing = size; //嵌套内循环,数据交换次数
int i = 0;
int j = 0;
int k = 0;
int temp; //交换中间值
// 思路
// 第一个数和第二个数比,大的往后交换,最后一位为最大值,交换sizing - 1次(嵌套内循环)。
// 数据交换次数减1,重复执行上一步循环,一共执行size- 1 次 (嵌套外循环)
for( j = 0; j < size - 1; j++)//嵌套外循环
{
for( i = 0; i < sizing - 1 ; i++)//嵌套内循环
{
if(array[i] > array[i + 1])
{
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
puts("冒泡从小到大排序:");
for(k = 0; k < size; k++) //打印此时数组所有数据情况
{
printf("%d ",array[k]);
}
printf("\n");
}
}
sizing--; // 嵌套内循环,数据交换次数 - 1
}
return 0;
}
输出结果:
二、简单选择排序(从小到大):
#include <stdio.h>
int main()
{
int array[] = {10, 6, 12, 2, 1};
int size = sizeof(array) / sizeof(array[0]); // 数组长度
// 简单选择排序法(从小到大)
// array[j]和数组后面直到array[size - 1]全部比较一遍,一共比较交换size -(j+1) 次 (嵌套内循环),第一个数为最大数
// 每次用来和别人比较的主数据为array[j],j每次经过内循环就加一(嵌套外循环)
int i,j,k;
int tmp;// 交换中间变量
for(j = 0; j < size - 1; j++) //循环外嵌套
{
for(i = j + 1; i < size; i++) //循环内嵌套,//i = j + 1表示每固定一个数, i变大一个数也代表着交换次数 - 1
{
if(array[j] > array[i])
{
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
puts("简单选择排序法(从小到大):");
for(k = 0; k < size; k++) // 打印数组所有数据
{
printf("%d ", array[k]);
}
printf("\n");
}
}
}
return 0;
}
输出结果: