zoukankan      html  css  js  c++  java
  • 选择、冒泡、插入排序

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <time.h>
      4 #define MAX 10
      5 
      6 void selsort(int[]);
      7 void bubsort(int[],int);
      8 void insort(int[]);
      9 void bubsort(int[]);
     10 void swap(int &, int &);
     11 int prin(int[]);
     12 int main()
     13 {
     14     int number[MAX] = { 0 };
     15     int i;
     16     srand(time(NULL));
     17     printf("排序前: ");
     18     for (i = 0; i < MAX; i++)
     19     {
     20         number[i] = rand() % 100;
     21         printf("%d ", number[i]);
     22     }
     23     printf("
    请选择排序方式: 
    ");
     24     printf("1:选择
    2:冒泡
    3:插入
    4:没有flag的冒泡:");
     25     scanf_s("%d", &i);
     26     switch (i)
     27     {
     28     case 1:
     29         selsort(number);
     30         break;
     31     case 2:
     32         bubsort(number,1);
     33         break;
     34     case 3:
     35         insort(number);
     36         break;
     37     case 4:
     38         bubsort(number);
     39         break;
     40     default:
     41         printf("只有这四种可选
    ");
     42     }
     43     return 0;
     44 }
     45 void swap(int &x, int &y)
     46 {
     47     int t;
     48     t = x;
     49     x = y;
     50     y = t;
     51 }
     52 void selsort(int number[])
     53 {
     54     int i, j, k, m;
     55     for (i = 0; i < MAX - 1; i++) 
     56     {
     57         m = i;
     58         for (j = i + 1; j < MAX; j++)
     59         {
     60             if (number[j] < number[m])
     61                 m = j;
     62         }
     63             
     64         if (i != m)
     65             swap(number[i], number[m]);
     66         printf("第%d次选择排序: ", i + 1);
     67         for (k = 0; k < MAX; k++)
     68         {
     69             printf("%d ", number[k]);
     70         }
     71             
     72         printf("
    ");
     73     }
     74 }
     75 void bubsort(int number[],int flag)
     76 {
     77     int i, j, k;
     78     for (i = 0; i < MAX - 1 && flag==1; i++)
     79     {
     80         flag = 0;
     81         for (j = 0; j < MAX - (i + 1); j++)
     82         {
     83             if (number[j + 1] < number[j])
     84             {
     85                 swap(number[j + 1], number[j]);
     86                 flag = 1;
     87             }
     88         }
     89         printf("第%d次冒泡排序:", i + 1);
     90         prin(number);
     91     }
     92 }
     93 void bubsort(int number[])
     94 {
     95     int i, j, k;
     96     for (i = 0; i < MAX - 1; i++)
     97     {
     98         for (j = 0; j < MAX - (i + 1); j++)
     99         {
    100             if (number[j + 1] < number[j])
    101             {
    102                 swap(number[j + 1], number[j]);    
    103             }
    104         }
    105         printf("第%d次没有flag冒泡排序:", i + 1);
    106         prin(number);
    107     }
    108 }
    109 void insort(int number[])
    110 {
    111     int i, j, k, tmp;
    112     for (j = 1; j < MAX - 1; j++)
    113     {
    114         tmp = number[j];
    115         i = j - 1;
    116         while (tmp < number[i])
    117         {
    118             number[i + 1] = number[i];
    119             i--;
    120             if (i == -1)
    121                 break;
    122         }
    123         number[i + 1] = tmp;
    124         printf("第%d次插入排序:", i + 1);
    125         prin(number);
    126     }
    127 }
    128 int prin(int number[])
    129 {
    130     int i;
    131     for (i = 0; i < MAX; i++)
    132     {
    133         printf("%d ", number[i]);
    134     }
    135     printf("
    ");
    136     return 0;
    137 }

    对于flag的解释引用知乎上截图

    有flag 但还是会多一次重复的排序。

  • 相关阅读:
    老杳:2017年中国集成电路产业十大新闻
    RMA退货流程解决方案
    Linux
    vue.js
    NET Core度身定制的AOP框架
    Timeline
    HTTP
    MVC 常用扩展点:过滤器、模型绑定等
    装箱拆箱
    jQuery Tree
  • 原文地址:https://www.cnblogs.com/pfybk/p/14095128.html
Copyright © 2011-2022 走看看