美文网首页
C语言 经典排序算法 - 冒泡排序Bubble sort

C语言 经典排序算法 - 冒泡排序Bubble sort

作者: TimHsieh | 来源:发表于2015-12-23 19:25 被阅读365次

    原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,
    这样一趟过去后,最大或最小的数字被交换到了最后一位,
    然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子
    例子为从小到大排序,
    原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |

    第一趟排序(外循环)
    第一次两两比较6 > 2交换(内循环)
    交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |
    交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

    第二次两两比较,6 > 4交换
    交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |
    交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

    第三次两两比较,6 > 1交换
    交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |
    交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

    第四次两两比较,6 > 5交换
    交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |
    交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

    第五次两两比较,6 < 9不交换
    交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
    交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

    第二趟排序(外循环)
    第一次两两比较2 < 4不交换
    交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
    交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

    第二次两两比较,4 > 1交换
    交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

    第三次两两比较,4 < 5不交换
    交换前状态| 2 | 1 | 4 | 5 | 6 | 9 | 交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

    第四次两两比较,5 < 6不交换
    交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |
    交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

    第三趟排序(外循环)
    第一次两两比较2 > 1交换
    交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |
    交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

    第二次两两比较,2 < 4不交换
    交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

    第三次两两比较,4 < 5不交换
    交换后状态| 1 | 2 | 4 | 5 | 6 | 9 | 交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

    第四趟排序(外循环)无交换

    第五趟排序(外循环)无交换

    201111301912294099.gif
    代码仅供参考:
    static void bubble_sort(int[] unsorted)
        {
            for (int i = 0; i < unsorted.Length; i++)
            {
                for (int j = i; j < unsorted.Length; j++)
                {
                    if (unsorted[i] > unsorted[j])
                    {
                        int temp = unsorted[i];
                        unsorted[i] = unsorted[j];
                        unsorted[j] = temp;
                    }
                }
            }
        }
        static void Main(string[] args)
        {
            int[] x = { 6, 2, 4, 1, 5, 9 };
            bubble_sort(x);
            foreach (var item in x)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
    

    x

    相关文章

      网友评论

          本文标题:C语言 经典排序算法 - 冒泡排序Bubble sort

          本文链接:https://www.haomeiwen.com/subject/yksvhttx.html