冒泡排序:相邻两俩比较,小的放前面,大的放后面
//冒泡排序:相邻两俩比较,小的放前面,大的放后面
//大的放右边,小的放左边
#include<stdio.h>
int main()
{
int arr[] = { 3,5,2,1,4 };
int len = sizeof(arr) / sizeof(int);
int num = len;
for (int i = 0; i <len; i++)
{
for (int j=0; j < num-1; j++)//当j=4时,j+1=5,循环并不到达五,所以索引最大是num-1
{
if (arr[j] > arr[j+1])//前面一个和后面一个比较
{
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
num = num - 1;//5到最后面已经是最大的了,所以就不用再循环判断arr[j]是否大于5,每次循环到最后的数都是这次比较的数中最大的
}
for (int i = 0; i < len; i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
第二种循环方式:不用定义num 用len-1-i来表示num-1;
//for (int i = 0; i < len; i++)
//{
// for (int j = 0; j < len-1-i; j++)
// {
//
// if (arr[j] > arr[j + 1])
// {
// int temp = arr[j + 1];
// arr[j + 1] = arr[j];
// arr[j] = temp;
// }
//
// }