zoukankan      html  css  js  c++  java
  • 排序算法

    【冒泡排序】

        int i, j, temp;
        for (j = 0; j < len - 1; j++)
        {
            for (i = 0; i < len - 1 - j; i++)
            if (a[i] > a[i + 1])
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }

    过程图:https://blog.csdn.net/lu_1079776757/article/details/80459370

    以下写法都对:

        int i, j, temp;
        for (i = 0; i< len ; j++)
        {
            for (j = i+1; i < len; i++)
            if (a[i] > a[j])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
        int i, j, temp;
        for (i = 0; i < len ; j++)
        {
            for (j = len-2; i >=j; j--)
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
        int i, j, temp;
        for (i = 0; i < len;i++)
        {
            for (j = 1; j < len - i; j++)
            if (a[j-1] > a[j])
            {
                temp = a[j];
                a[j] = a[j-1];
                a[j-1] = temp;
            }
        }
        int i, j, temp;
        for (i = len-1; i < 0; i--)
        {
            for (j = 0; j < i; j++)
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }

    大学老师批作业的时候该多发愁啊。

    【选择排序】

    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    
    int main(int argc, char* argv[])
    {
        int a[]={4,3,5,2,6,1};
        int temp,min;
        int len=sizeof(a)/sizeof(int);
        //printf("len=%d
    ",len);
        int i,j,k;
        for(i=0;i<len-1;i++){
            min=i;
            for(j=i+1;j<len;j++){
                if(a[j]<a[min]){
                    min=j;
                }
            }
            if(min!=i){
                temp=a[min];
                a[min]=a[i];
                a[i]=temp;
                /*
                for(k=0;k<len;k++){
                    printf("%d ",a[k]);
                }
                printf("
    ");
                */
            }
        }
        return 0;
    }

    if(min!=i)放在里面也对,不过交换次数超级多。

    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    
    int main(int argc, char* argv[])
    {
        int a[]={6,5,4,3,2,1};
        int temp,min;
        int len=sizeof(a)/sizeof(int);
        //printf("len=%d
    ",len);
        int i,j,k;
        for(i=0;i<len-1;i++){
            min=i;
            for(j=i+1;j<len;j++){
                if(a[j]<a[min]){
                    min=j;
                }
                if(min!=i){
                    temp=a[min];
                    a[min]=a[i];
                    a[i]=temp;
                }
                /*
                for(k=0;k<len;k++){
                    printf("%d ",a[k]);
                }
                printf("
    ");
                */
            }
        }
        return 0;
    }
  • 相关阅读:
    UIKit框架-高级控件:2.UIScrollView的单图分页设置
    欢迎使用CSDN-markdown编辑器
    UIKit框架-高级控件:1.UIScrollView的基本认识
    UIKit基础:18-MVC模式, 代理消息传递机制, 计时器机制
    UIKit基础:17-基础控件的总结
    UIKit基础:16-小游戏之舒尔特表
    UIKit基础:15-与电脑玩剪刀石头布
    iOS之 Category 属性 的理解
    学习方法,特别对于新手
    iOS 之GCD串行和并发队列的理解
  • 原文地址:https://www.cnblogs.com/shuicaojing/p/13903866.html
Copyright © 2011-2022 走看看