zoukankan      html  css  js  c++  java
  • 47. 对数组进行冒泡排序,实现冒泡排序的基础版与优化版

    //冒泡排序:
    //优化版口诀:序而不排 -> 优化原理:证实已经有序,不需要再次循环 -> 代码角度实现优化:内重循环已证实有序,外重循环不需要再次循环可以停止了。建立flag标记告诉外层循环有序这件事。

    //何时为有序?就是内存循环在从0到尾往前比较时,没出现过一次交换的动作,则证明从此次大趟开始,剩下的所有数据已经有序。

    #include <stdio.h>
    void mySwap(int *pa ,int *pb)
    {
        *pa ^= *pb;
        *pb ^= *pa;
        *pa ^= *pb;
    }
    //基础版
    void popSort(int *p,int n)//升序
    {
        int i,j;
        for(i = 0;i<n-1;i++)//i控制的是比较多少大趟
        {
            for(j = 0;j<n-1-i;j++)//j控制的是比较位置
            {
                if(p[j]>p[j+1])
                {
                    mySwap(&p[j],&p[j+1]);
                }
            }
        }
    
    }
    
    //优化版
    void popSort2(int *p,int n)//升序
    {
        int i,j;
        int flag;
        for(i = 0;i<n-1;i++)
        {
            flag = 1;
            for(j = 0;j<n-1-i;j++)
            {
                if(p[j]>p[j+1])
                {
                    mySwap(&p[j],&p[j+1]);
                    flag = 0;
                }
            }
            if(flag)
                break;
        }
    
    }
    
    int main(void)
    {
        int arr[10] = {1,3,5,7,9,2,4,6,8,0};
    
        popSort2(arr,10);
    
        int i;
        for(i = 0;i<10;i++)
            printf("%d
    ",arr[i]);
    
        return 0;
    }
  • 相关阅读:
    JSTL&EL
    Response
    HTTP、Request
    Tomcat、Servlet
    单片机概念及应用
    JQuery高级
    Jquery基础
    JavaScript
    HTML、CSS
    跟着文档学习gulp1.2创建任务(task)
  • 原文地址:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9519014.html
Copyright © 2011-2022 走看看