冒泡排序

冒泡排序

冒泡排序是一种常用且非常简单的排序法,对数组内的元素进行比较排序,它的算法描述如下:

  • 比较相邻的两个元素,如果第一个比第二个大,就交换它们的位置
  • 对每一对相邻元素都进行比较,比较完后找到最大值
  • 重复以上步骤,每次比较次数减一次,直到不需要进行比较

冒泡排序具体实现过程:

  • 首先定义一个无序数组
  • 使用两个for循环,外循环每次执行次数减一次,内循环进行元素比较

参考代码:

#include
#include
int main(void)
{
    int arr[10];
    int n = sizeof(arr)/sizeof(arr[0]);
    int temp = 0;

    printf("请输入%d个整数:",n);
    for(int i=0;iarr[j+1])
            {
                temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    printf("排序后的数列:");
    for(int i=0;i

改进优化:如果在一次冒泡中没有进行交换,表明数列已经有序则不需要再进行冒泡,然后退出。

使用标志位来记录有无元素位置交换。

参考代码:

#include
#include
int main(void)
{
    int arr[10];
    int n = sizeof(arr)/sizeof(arr[0]);
    int temp = 0;
    int flag = 0;//默认为有序(改进)
    printf("请输入%d个整数:",n);
    for(int i=0;iarr[j+1])
            {
                temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
                flag = 1;
            }
        }
         if(flag == 0){
             break;
         }
    }
    printf("排序后的数列:");
    for(int i=0;i

Original: https://www.cnblogs.com/codecp/p/15335438.html
Author: 君有云
Title: 冒泡排序

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/714820/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球