关于冒泡排序算法的实验
关于冒泡排序算法的实验
在数据量比较少的应用场景,所有的排序算法的时间差异是比较小的,冒泡排序可能是经常用于处理小数据量的排序算法,冒泡排序的时间复杂度为 O(n2)。
1.C语言的冒泡排序和选择排序的实例:
#include <stdio.h>
int main(){
int arr[] = {986,89,56,2,78,8,23,47,36,98,3,876,234};
int temp, i, j, total;
int len = (unsigned)sizeof(arr)/sizeof(arr);
printf("原始数据:\n");
for(i = 0; i < len; i++){
printf("%d ", arr);
}
printf("\n\n");
//1.-------------------------------
printf("1.冒泡排序方法1:\n");
int arr_1;
for(i = 0;i < len;i++){
arr_1 = arr;
}
total = 0;
//1.冒泡排序(注意细节,这里使用 i < len,j < len - 1)
for(i = 0;i < len; i++){
for(j = 0; j < len - 1; j++){
if(arr_1 > arr_1){
temp = arr_1;
arr_1 = arr_1;
arr_1 = temp;
}
total++;
}
}
for(i = 0; i < len; i++){
printf("%d ", arr_1);
}
printf("\n循环次数:%d\n", total);
//2.-------------------------------
printf("\n\n2.冒泡排序方法2:\n");
int arr_2;
for(i = 0;i < len;i++){
arr_2 = arr;
}
total = 0;
//2.冒泡排序(注意细节,这里使用 i < len - 1,j < len - 1)
for(i = 0;i < len - 1; i++){
for(j = 0; j < len - 1; j++){
if(arr_2 > arr_2){
temp = arr_2;
arr_2 = arr_2;
arr_2 = temp;
}
total++;
}
}
for(i = 0; i < len; i++){
printf("%d ", arr_2);
}
printf("\n循环次数:%d\n", total);
//3.-------------------------------
printf("\n\n3.冒泡排序方法3:\n");
int arr_3;
for(i = 0;i < len;i++){
arr_3 = arr;
}
total = 0;
//3.冒泡排序(注意细节,这里使用 i < len,j < (len - i - 1))
for(i = 0;i < len; i++){
for(j = 0; j < (len - i - 1); j++){
if(arr_3 > arr_3){
temp = arr_3;
arr_3 = arr_3;
arr_3 = temp;
}
total++;
}
}
for(i = 0; i < len; i++){
printf("%d ", arr_3);
}
printf("\n循环次数:%d\n", total);
//4.-------------------------------
printf("\n\n4.冒泡排序方法4(得到错误结果):\n");
int arr_4;
for(i = 0;i < len;i++){
arr_4 = arr;
}
total = 0;
//4.冒泡排序(注意细节,这里使用 i < len,j < (len - i))
for(i = 0;i < len; i++){
for(j = 0; j < (len - i); j++){
if(arr_4 > arr_4){
temp = arr_4;
arr_4 = arr_4;
arr_4 = temp;
}
total++;
}
}
for(i = 0; i < len; i++){
printf("%d ", arr_4);
}
printf("\n循环次数:%d\n", total);
//5.-------------------------------
printf("\n\n5.选择排序:\n");
int arr2;
for(i = 0;i < len;i++){
arr2 = arr;
}
total = 0;
//5.选择排序
for(i = 0;i < len - 1; i++){
for(j = i + 1; j < len; j++){
if(arr2 > arr2){
temp = arr2;
arr2 = arr2;
arr2 = temp;
}
total++;
}
}
for(i = 0; i < len; i++){
printf("%d ", arr2);
}
printf("\n循环次数:%d\n", total);
}
2.执行后的效果,自已去比对:
————————————————
版权声明:本文为CSDN博主「冰雪青松」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dai510131/article/details/126688498
页:
[1]