你并不是我的唯一吧 关注:16贴子:474
  • 14回复贴,共1

==管他什么算法什么排序盘就完事了==

只看楼主收藏回复

冒泡排序 √
目前:直接插入排序


IP属地:上海1楼2020-01-17 00:28回复
    =w=一句比较有意思的话
    Donald E. Knuth(中文名为高德纳,1974 年 图灵奖获得者)所说:
    冒泡排序除了它迷人的名字和导致了某些有趣的理论问题这一事实之外,似乎没有什么值得推荐的。


    IP属地:上海2楼2020-01-17 00:39
    回复
      冒泡排序的时间复杂度是 O(N²)
      直接插入排序的时间复杂度是O(N²) 两个一样
      接下来掐时间默写两段程序 start☆~


      IP属地:上海3楼2020-01-17 01:08
      回复
        //冒泡排序法
        #include <stdio.h>
        void main(){
        int a[5];
        int i,j,temp;
        for(i=0;i<5;i++) scanf("%d",&a[i]);
        for(i=1;i<5;i++){
        for(j=0;j<5-i;j++){
        if(a[j]>a[j+1])//升序排列
        {
        temp=a[j]; a[j]=a[j+1];a[j+1]=temp;}
        }}
        for(i=0;i<5;i++) printf("%d",a[i]);
        }


        IP属地:上海4楼2020-01-17 01:11
        回复
          上述程序编译通过
          //直接插入排序
          #include <stdio.h>
          void InsertSort(int a[],int n){
          int i,j,key;
          for(i=1;i<n;i++){
          key=a[i];
          j=i-1;
          while(j>=0&&a[j]>k){
          a[j+1]=a[j];
          j--;
          }}
          }
          void main(){
          int i,a[5];
          [url]http://发 表[/url]
          for(i=0;i<5;i++) scanf("%d",&a[i]);
          InsertSort(a,5);
          for(j=0;j<5;j++) printf("%d",a[i]);}


          IP属地:上海5楼2020-01-17 01:16
          回复
            有bug 于是又调试了
            #include <stdio.h>
            void InsertSort(int a[],int n){
            int i,j,key;
            for(i=1;i<n;i++){
            key=a[i];
            j=i-1;
            while(j>=0&&a[j]>key){
            a[j+1]=a[j];
            j--;
            }
            a[j+1]=key;}
            }
            void main(){
            int i,a[5],j;
            for(i=0;i<5;i++) scanf("%d",&a[i]);
            InsertSort(a,5);
            for(j=0;j<5;j++) printf("%d",a[j]);}
            记住特点是for while循环+2-2-1+对称j特点


            IP属地:上海6楼2020-01-17 01:18
            回复
              冒泡排序 √
              直接插入排序 √
              快速排序start 思想是用两个哨兵 比直接插入排序多一个
              快速排序的时间复杂度为O(nlogn)


              IP属地:上海7楼2020-01-17 01:24
              回复
                不稳定是说,对于两个同样的元素,排序之后的顺序不确定,与原来的顺序无关
                =w=快速排序的程序无论是自己码还是看教程都不能跑出来呢 有点意思


                IP属地:上海8楼2020-01-17 02:01
                回复
                  刚才尝试了桶排序 依然不能输出结果 可能是因为复杂度里面带了对数 所以不能正常运行显示结果
                  下面掐时间默写快速排序和桶排序 start☆~


                  IP属地:上海9楼2020-01-17 02:28
                  回复
                    #include <stdio.h>
                    int a[101],N;
                    void QuickSort(int left,int right){
                    int i,j,temp;
                    i=left;j=right;temp=a[left];
                    if(left>right) return;
                    while(i!=j){
                    while(a[j]>temp&&i<j) j--;
                    while(a[i]<temp&&i<j)i++;
                    if(i<j)
                    {temp=a[i]; a[i]=a[j]; a[j]=temp;}
                    }
                    QuickSort(left,i-1);
                    QuickSort(i+1,right);
                    a[left]=a[i];
                    a[i]=temp;}
                    void main(){
                    int i,j;
                    scanf("%d",&n);
                    for(i=0;i<n;i++) scanf("%d",&a[i]);
                    QuickSort(1,n);
                    for(i=0;i<n;i++) printf("%d",a[i]);
                    }


                    IP属地:上海10楼2020-01-17 02:39
                    回复
                      //快速排序
                      #include <stdio.h>
                      void main(){
                      int i,j,t,a[11];
                      for(i=0;i<=10;i++)
                      a[i]=0;
                      for(i=0;i<=10;i++)
                      {scanf("%d",&a[i]);
                      a[t]++;}
                      for(i=0;i<=10;i++){
                      for(j=1;j<=a[i];j++){
                      printf("%d",i);}}
                      getchar();getchar();
                      return 0;
                      }


                      IP属地:上海11楼2020-01-17 02:43
                      回复
                        快速排序的时间复杂度也为O(nlogn)


                        IP属地:上海12楼2020-01-17 02:44
                        回复
                          打卡 冒泡排序√
                          #include <stdio.h>
                          void main(){
                          int a[101],n;
                          int i,j,temp;
                          scanf("%d",&n);
                          for(i=0;i<n;i++)
                          scanf("%d",&a[i]);
                          //下面是冒泡排序部分
                          for(i=1;i<n;i++)
                          {for(j=0;j<n-i;j++)
                          {
                          if(a[j]>a[j+1])
                          {temp=a[j];
                          a[j]=a[j+1];
                          a[j+1]=temp;}}}
                          for(i=0;i<n;i++)
                          printf("%d ",a[i]);
                          }


                          IP属地:上海13楼2020-01-17 08:34
                          回复
                            差点被快排整死 重点是最后面的输入输出一定要从1开始 并且一定要从数组的第二个数开始
                            #include <stdio.h>
                            int a[101],n;
                            void QuickSort(int left,int right){
                            int i,j,temp;
                            temp=a[left];
                            if(left>right) return; //递归终止条件
                            i=left;
                            j=right;
                            while(i!=j)
                            {while(a[j]>=temp&&i<j) j--;
                            while(a[i]<=temp&&i<j) i++;
                            if(i<j) {temp=a[i];
                            a[i]=a[j];
                            a[j]=temp;}
                            }
                            a[left]=a[i];
                            a[i]=temp;
                            QuickSort(left,i-1);
                            QuickSort(i+1,right);}
                            void main(){
                            scanf("%d",&n);
                            int i,j;
                            for(i=1;i<=n;i++)
                            scanf("%d",&a[i]);
                            QuickSort(1,n);
                            for(j=1;j<=n;j++)
                            printf("%d ",a[j]);
                            getchar();getchar();
                            }


                            IP属地:上海14楼2020-01-17 09:08
                            回复
                              直接插入排序没有递归跳出条件 一定要注意最后的输入和输出的循环从0开始 刚开始的for循环从1开始 <n
                              #include <stdio.h>
                              void InsertSort(int a[],int n){
                              int i,j,key;
                              for(i=1;i<n;i++)
                              {
                              key=a[i];
                              j=i-1;
                              while(j>=0&&a[j]>key){
                              a[j+1]=a[j];
                              j--;
                              }
                              a[j+1]=key;
                              }
                              }
                              void main(){
                              int i,a[5];
                              for(i=0;i<5;i++)
                              scanf("%d",&a[i]);
                              InsertSort(a,5);
                              for(i=0;i<5;i++)
                              printf("%d ",a[i]);
                              }


                              IP属地:上海15楼2020-01-17 09:32
                              回复