您的当前位置:首页【C】选择排序与冒泡排序区别及其过程

【C】选择排序与冒泡排序区别及其过程

2024-12-13 来源:哗拓教育

前言

在最初的刚接触排序的时候,起初我确实只是简单的能写出过程,但是却没有详细的去了解选择与冒泡排序之间的区别。后来用代码测试验证后,才明白两者的区别。

选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

通俗的讲就是,每一次循环,都是拿当前索引去挨个比,找出最值,放大此索引中。如果有2个数,需要循环1次,如果有N个数,需要循环N-1次。代码如下:

int nums[10]={100,34,288,1,199,199,288,0,10,3};
int lenth = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < lenth-1; i++) {
    for (int j = i+1; j < lenth; j++) {
        if (nums[i]<nums[j]) {
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
    }
    printf("第%i比较后 \n",i+1);
    for (int m = 0; m<lenth; m++) {
        printf("%i    ",nums[m]);
    }
    
    printf("\n\n");
}

 printf("排序结果为:\n");
for (int i = 0; i<lenth; i++) {
     printf("%i   ",nums[i]);
}
printf("\n\n");
}

以上就是选择排序,结果可自行打印就可清晰看到整个过程了。

冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。代码如下:

int nums[4]={100,34,288,1};
int lenth = sizeof(nums) / sizeof(nums[0]);
for (int i=0; i < lenth-1; i++) {
    for (int j = 0; j < lenth - 1 - i; j++) {
       // printf("%i----%i\n",j,j+1);
        if (nums[j] > nums[j+1]) {
            int temp = nums[j];
            nums[j] = nums[j+1];
            nums[j+1] = temp;
        }
        
        
    }
    
    printf("第%i次排序后:",i+1);
    for (int i = 0; i<lenth; i++) {
        printf("%i  ",nums[i]);
    }
    printf("\n");
}

printf("最终的排序结果\n\n");
for (int i = 0; i<lenth; i++) {
    printf("%i  ",nums[i]);
}

以上就是冒泡排序,过程也可自行进行打印。

控制台输出

当然排序的算法还有很多种,后续再继续测试说明快速排序。

显示全文