zoukankan      html  css  js  c++  java
  • 冒泡排序详解7-20

    //
    //  main.m
    //  Mypritice1
    //
    //  Created by laouhn on 15/7/18.
    //  Copyright (c) 2015年 池海涛. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[]) {
       /*
        int a[5] = {38,24,18,29,10};
        //冒泡排序
        int temp = 0;
        for (int i = 0; i < 5 - 1; i++) {
            for (int j = 0; j < 5 - 1 - i; j++) {
                if (a[j] > a[j + 1]) {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j + 1] = temp;
                }
            }
        }
        for (int i = 0; i < 5; i++) {
            printf("%d ",a[i]);
        }
        */
        //冒泡排序详解
        /*
        1.冒泡排序的原理
         //38,24,18,29,10
         //两两比较,大的前移
         第一遍循环比较
         24,38,18,29,10
         24,18,38,29,10
         24,18,29,38,10
         24,18,29,10,38
         第二遍循环比较
         18,24,29,10,38
         18,24,29,10,38
         18,24,10,29,38
         第三遍循环比较
         18,24,10,29,38
         18,10,24,29,38
         第四遍循环比较
         10,18,24,29,38
         每一趟找出最大值
         */
        
        int a[5] = {38,24,18,29,10};
        int temp = 0;
        //第一趟的比较找出最大值,注意i < 5 - 1不能为i < 5 否则越界
        for (int i = 0;  i < 5 - 1; i++ ) {
            if (a[i] > a[i + 1]) {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
        //第二趟比较
        for (int i = 0;  i < 5 - 1; i++ ) {
            if (a[i] > a[i + 1]) {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
        //第三趟比较
        for (int i = 0;  i < 5 - 1; i++ ) {
            if (a[i] > a[i + 1]) {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
        //第四趟比较
        for (int i = 0;  i < 5 - 1; i++ ) {
            if (a[i] > a[i + 1]) {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
           //从上面可以看出没一趟的比较代码都是一样的
        //5个数排序,比较4趟,n个数排序比较n - 1趟,    //所以在for循环外加一个for循环,表示循环的趟数
        for (int j = 0; j < 5 -1; j++) {//循环了4趟
            for (int i = 0;  i < 5 - 1; i++ ) {//每趟比较了4次
                if (a[i] > a[i + 1]) {
                    temp = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = temp;
                }
            }
        }
        //每一趟比较了4次,照成不必要的比较,第一趟比较4次,第二趟比较3次,第三趟比较2,第四趟比较1次
        //上面的代码照成了无用的循环
        for (int j = 0; j < 5 -1; j++) {//循环了4趟
            for (int i = 0;  i < 5 - 1 - j; i++ ) {//每趟比较了5 -1 -j次
                if (a[i] > a[i + 1]) {
                    temp = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = temp;
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    关于RAS加密中pfx格式提取字符串私钥 (转)
    Oracle冷备份和热备份的实践(原创)
    数据库的备份与恢复(oracle 11g) (转)
    Oracle安装-------实例化EM 配置文件时出错问题 ( 转 )
    oracle表空间维护常用命令
    使用Navicat for Oracle新建表空间、用户及权限赋予 (转)
    【JavaScript】JavaScript模块化编程
    【随笔】入行必读:互联网行业薪酬等级
    【JavaScript】JavaScript Promise 探微
    【Java】关于并发
  • 原文地址:https://www.cnblogs.com/wohaoxue/p/4656293.html
Copyright © 2011-2022 走看看