排序算法002-冒泡排序


冒泡排序的基本思想

每次比较两个相邻元素,如果他们的顺序错误就把它们交换过来。


时间复杂度

由于每个数字都要和所有相邻的数字进行比较,即其核心部分就是双重嵌套循环,所以不难想到为O(N2),这是一个非常高的时间复杂度


动图演示

happysneaker.com


代码实现

#include <stdio.h>  
int main(int argc, const char * argv[])  
{  
    int a[100],i,j,t,n;  
    scanf("%d",&n); 
    //输入n个数  
    for (i = 1; i <= n; i++) {  
        scanf("%d",&a[i]);  
    }
    
    //核心部分双重嵌套循环  
    for (i = 1; i < n-1; i++) { 
        //n个数排序,只进行n-1趟  
        for (j = 1; j < n-i; j++) { 
            //从第一位开始,知道最后一位数  
            if (a[j] < a[j+1]) {  
                t = a[j];  
                a[j] = a[j+1];  
                a[j+1] = t;  
            }  
        }  
    } 
     
    for (i = 1; i <= n; i++) {  
        printf("%d ",a[i]);  
    }  
    printf("\n");  
    return 0;  
}

运行结果

happysneaker.com

Unity那些事儿
请先登录后发表评论
  • 最新评论
  • 总共0条评论