算法学习之排序算法(一)(冒泡法)

来源:互联网 发布:还珠格格天上人间知画 编辑:程序博客网 时间:2024/05/17 19:21

冒泡排序的内容并不复杂。假设有n个数据需要排序,那么我们需要确定n个从大到小的数据,每一次都挑选第n大的数据是多少,并且放大相应的位置。直到所有的数据都排列整齐了,那么我们的排序就结束了。
1、冒泡代码

<code class="hljs cpp has-numbering"><span class="hljs-keyword">void</span> bubble_sort(<span class="hljs-keyword">int</span> <span class="hljs-built_in">array</span>[], <span class="hljs-keyword">int</span> length){    <span class="hljs-keyword">int</span> inner = <span class="hljs-number">0</span>, outer = <span class="hljs-number">0</span>;    <span class="hljs-keyword">int</span> median = <span class="hljs-number">0</span>;    <span class="hljs-keyword">if</span>(NULL == <span class="hljs-built_in">array</span> || <span class="hljs-number">0</span> == length)        <span class="hljs-keyword">return</span>;    <span class="hljs-keyword">for</span>(outer = length-<span class="hljs-number">1</span>; outer >= <span class="hljs-number">1</span>; outer --){        <span class="hljs-keyword">for</span>(inner = <span class="hljs-number">0</span>; inner < outer; inner ++){            <span class="hljs-keyword">if</span>(<span class="hljs-built_in">array</span>[inner] > <span class="hljs-built_in">array</span>[inner + <span class="hljs-number">1</span>]){                median = <span class="hljs-built_in">array</span>[inner];                <span class="hljs-built_in">array</span>[inner] = <span class="hljs-built_in">array</span>[inner + <span class="hljs-number">1</span>];                <span class="hljs-built_in">array</span>[inner + <span class="hljs-number">1</span>] = median;            }        }    }}</code>

2、改进代码

<code class="hljs cpp has-numbering"><span class="hljs-keyword">void</span> bubble_sort(<span class="hljs-keyword">int</span> <span class="hljs-built_in">array</span>[], <span class="hljs-keyword">int</span> length){    <span class="hljs-keyword">int</span> inner = <span class="hljs-number">0</span>, outer = <span class="hljs-number">0</span>;    <span class="hljs-keyword">int</span> median = <span class="hljs-number">0</span>;    <span class="hljs-keyword">int</span> flag = <span class="hljs-number">1</span>;    <span class="hljs-keyword">if</span>(NULL == <span class="hljs-built_in">array</span> || <span class="hljs-number">0</span> == length)        <span class="hljs-keyword">return</span>;    <span class="hljs-keyword">for</span>(outer = length-<span class="hljs-number">1</span>; outer >= <span class="hljs-number">1</span> && flag; outer --){        flag = <span class="hljs-number">0</span>;        <span class="hljs-keyword">for</span>(inner = <span class="hljs-number">0</span>; inner < outer; inner ++){            <span class="hljs-keyword">if</span>(<span class="hljs-built_in">array</span>[inner] > <span class="hljs-built_in">array</span>[inner + <span class="hljs-number">1</span>]){                median = <span class="hljs-built_in">array</span>[inner];                <span class="hljs-built_in">array</span>[inner] = <span class="hljs-built_in">array</span>[inner + <span class="hljs-number">1</span>];                <span class="hljs-built_in">array</span>[inner + <span class="hljs-number">1</span>] = median;                <span class="hljs-keyword">if</span>(flag == <span class="hljs-number">0</span>)                    flag = <span class="hljs-number">1</span>;            }        }    }}</code>

0 0
原创粉丝点击