#include<stdio.h>
int main()
{
int arr[] = { 5, 7, 6, 4, 3, 8, 9, 2 };
int len = sizeof(arr) / 4;
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len-1; j++)
{
if (arr[j] > arr[j + 1])//如果左边的数比右边的数大就交换
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
时间复杂度O(n^2)
原理:
我用的是升序,当数组左边的数比右边的数大时,两者交换
例子:
5 7 6 4 3 8 9 2
第一次 5 6 4 3 7 8 2 9
第二次 5 4 3 6 7 2 8 9
第三次 4 3 5 6 2 7 8 9
第四次 3 4 5 2 6 7 8 9
第五次 3 4 2 5 6 7 8 9
第六次 3 2 4 5 6 7 8 9
第七次 2 3 4 5 6 7 8 9
当数组本来就有序的时候,时间复杂度为0