郑州优化网站,网页制作教程哔哩哔哩,网站建设公司怎样,邯郸信息港二手车出售其实排序有很多的方法#xff0c;比如#xff1a;冒泡排序#xff0c;插入排序#xff0c;快速排序#xff0c;归并排序#xff0c;选择排序等。今天来讲一下最简单的排序#xff1a;冒泡排序。这种排序的方法效率极其低下。
假设有一个整型数组#xff1a;
int arr[…其实排序有很多的方法比如冒泡排序插入排序快速排序归并排序选择排序等。今天来讲一下最简单的排序冒泡排序。这种排序的方法效率极其低下。
假设有一个整型数组
int arr[10]{10987654321}一共有10个元素下面开始比较。
10987654321
第一趟
从第一个元素10开始10比9大交换
91087654321
继续10又和8比较交换
98107654321 下来10继续和7比较又进行交换
98710654321 ........第一趟比较完后
98765432110 才刚把10排到合适位置。
接下来第二趟第三趟.....一直要像第一趟那样一共执行9趟因为有10个元素在9趟完成之后最后一个元素肯定已经归位因此只需要进行九趟即可才可以把这10个元素排好顺序。确实是效率低下啊。
好继续看第一趟的时候一共比较了9次。通过像上面的比较我们可以知道第二趟比较需要比较8次那么第三趟就需要7次。
因此我们用变量i来控制趟数用变量j来控制比较次数。每比较一趟比较次数就少一次。假设sz是数组元素的个数那么i将从0开始到size-1共进行size-1趟。j变量将从0数组首元素开始每比较一次比较次数减1因此j应该小于size-1-i。下面为参考代码
#define _CRT_SECURE_NO_WARNINGS 1
#include stdio.h
void bubble_sort(int arr[],int size)
{int i 0;int j 0;for (i 0; i size - 1; i){for (j 0; j size - 1 - i; j){if (arr[j] arr[j1]){int temp arr[j1];arr[j1] arr[j];arr[j] temp;}}}
}
int main()
{int i 0;int arr[] { 10987654321};printf(排序前:);int sz sizeof(arr) / sizeof(arr[0]);for (i 0; i sz; i){printf(%d , arr[i]);}printf(\n);bubble_sort(arr, sz);printf(排序后:);for (i 0; i sz; i){printf(%d , arr[i]);}return 0;
}