一、原理分析(以升序为例)
从第一个元素开始,每次比较这个元素和后一个元素的大小,若后一个元素比前一个元素大,则交换两个元素。每进行一次这个排序,可以把待排序数组的最大元素调整到最后的位置(升序和降序是不同的),下一次只用对[0,n-1]这个序列进行即可,经过(n-1)次,即可使待排序数组有序。
代码展示
void BubbleSort(int* arr, int sz)
{
for (int i = 0; i < sz; i++)
{
for (int j = 0; j < sz - 1 - i; j++)//每排完一组,区间-1
{
if (arr[j] > arr[j + 1])//前一个元素大于后一个元素时,交换两个数
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j+1] = tmp;
}
}
}
}
int main()
{
int arr[] = { 2,6,3,1,4,5,7 };
int sz = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, sz);
for (int i = 0; i < sz; i++)
{
printf("%d ",arr[i]);
}
return 0;
}
三、特性分析
1.时间复杂度O(N^2)
2.空间复杂度O(1)
3.稳定性:稳定
四、小结
以上便是关于c语言冒泡排序方法的分享,如果哪里有什么错误或者是可以改进的地方,欢迎在评论区或私信告诉我。如果这篇文章对你有帮助的话请点个赞或是收藏一下,感谢大家支持。