十大经典排序算法(动图演示)
0、算法概述
0.1 算法分类
十种常见排序算法可以分为两大类:
非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。
线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。
十种常见排序算法可以分为两大类:
非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。
线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。
0.3 相关概念
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。
不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。
时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。
空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
1.2 动图演示
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function bubbleSort(arr) {
var
len = arr.length;
for
(
var
i = 0; i < len - 1; i++) {
for
(
var
j = 0; j < len - 1 - i; j++) {
if
(arr[j] > arr[j+1]) {
// 相邻元素两两对比
var
temp = arr[j+1];
// 元素交换
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return
arr;
}
|
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
function selectionSort(arr) {
var
len = arr.length;
var
minIndex, temp;
for
(
var
i = 0; i < len - 1; i++) {
minIndex = i;
for
(
var
j = i + 1; j < len; j++) {
if
(arr[j] < arr[minIndex]) {
// 寻找最小的数
minIndex = j;
// 将最小数的索引保存
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return
arr;
}
|
表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function insertionSort(arr) {
var
len = arr.length;
var
preIndex, current;
for
(
var
i = 1; i < len; i++) {
preIndex = i - 1;
current = arr[i];
while
(preIndex >= 0 && arr[preIndex] > current) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
}
return
arr;
}
|
插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function shellSort(arr) {
var
len = arr.length,
temp,
gap = 1;
while
(gap < len / 3) {
// 动态定义间隔序列
gap = gap * 3 + 1;
}
for
(gap; gap > 0; gap = Math.floor(gap / 3)) {
for
(
var
i = gap; i < len; i++) {
temp = arr[i];
for
(
var
j = i-gap; j > 0 && arr[j]> temp; j-=gap) {
arr[j + gap] = arr[j];
}
arr[j + gap] = temp;
}
}
return
arr;
}
|
希尔排序的核心在于间隔序列的设定。既可以提前设定好间隔序列,也可以动态的定义间隔序列。动态定义间隔序列的算法是《算法(第4版)》的合著者Robert Sedgewick提出的。
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
function mergeSort(arr) {
// 采用自上而下的递归方法
var
len = arr.length;
if
(len < 2) {
return
arr;
}
var
middle = Math.floor(len / 2),
left = arr.slice(0, middle),
right = arr.slice(middle);
return
merge(mergeSort(left), mergeSort(right));
}
function merge(left, right) {
var
result = [];
while
(left.length>0 && right.length>0) {
if
(left[0] <= right[0]) {
result.push(left.shift());
}
else
{
result.push(right.shift());
}
}
while
(left.length)
result.push(left.shift());
while
(right.length)
result.push(right.shift());
return
result;
}
|
归并排序是一种稳定的排序方法。和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(nlogn)的时间复杂度。代价是需要额外的内存空间。
快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
function quickSort(arr, left, right) {
var
len = arr.length,
partitionIndex,
left =
typeof
left !=
'number'
? 0 : left,
right =
typeof
right !=
'number'
? len - 1 : right;
if
(left < right) {
partitionIndex = partition(arr, left, right);
quickSort(arr, left, partitionIndex-1);
quickSort(arr, partitionIndex+1, right);
}
return
arr;
}
function partition(arr, left ,right) {
// 分区操作
var
pivot = left,
// 设定基准值(pivot)
index = pivot + 1;
for
(
var
i = index; i <= right; i++) {
if
(arr[i] < arr[pivot]) {
swap(arr, i, index);
index++;
}
}
swap(arr, pivot, index - 1);
return
index-1;
}
function swap(arr, i, j) {
var
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
|
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
var
len;
// 因为声明的多个函数都需要数据长度,所以把len设置成为全局变量
function buildMaxHeap(arr) {
// 建立大顶堆
len = arr.length;
for
(
var
i = Math.floor(len/2); i >= 0; i--) {
heapify(arr, i);
}
}
function heapify(arr, i) {
// 堆调整
var
left = 2 * i + 1,
right = 2 * i + 2,
largest = i;
if
(left < len && arr[left] > arr[largest]) {
largest = left;
}
if
(right < len && arr[right] > arr[largest]) {
largest = right;
}
if
(largest != i) {
swap(arr, i, largest);
heapify(arr, largest);
}
}
function swap(arr, i, j) {
var
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
function heapSort(arr) {
buildMaxHeap(arr);
for
(
var
i = arr.length - 1; i > 0; i--) {
swap(arr, 0, i);
len--;
heapify(arr, 0);
}
return
arr;
}
|
计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
function countingSort(arr, maxValue) {
var
bucket =
new
Array(maxValue + 1),
sortedIndex = 0;
arrLen = arr.length,
bucketLen = maxValue + 1;
for
(
var
i = 0; i < arrLen; i++) {
if
(!bucket[arr[i]]) {
bucket[arr[i]] = 0;
}
bucket[arr[i]]++;
}
for
(
var
j = 0; j < bucketLen; j++) {
while
(bucket[j] > 0) {
arr[sortedIndex++] = j;
bucket[j]--;
}
}
return
arr;
}
|
计数排序是一个稳定的排序算法。当输入的元素是 n 个 0到 k 之间的整数时,时间复杂度是O(n+k),空间复杂度也是O(n+k),其排序速度快于任何比较排序算法。当k不是很大并且序列比较集中时,计数排序是一个很有效的排序算法。
桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
function bucketSort(arr, bucketSize) {
if
(arr.length === 0) {
return
arr;
}
var
i;
var
minValue = arr[0];
var
maxValue = arr[0];
for
(i = 1; i < arr.length; i++) {
if
(arr[i] < minValue) {
minValue = arr[i];
// 输入数据的最小值
}
else
if
(arr[i] > maxValue) {
maxValue = arr[i];
// 输入数据的最大值
}
}
// 桶的初始化
var
DEFAULT_BUCKET_SIZE = 5;
// 设置桶的默认数量为5
bucketSize = bucketSize || DEFAULT_BUCKET_SIZE;
var
bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1;
var
buckets =
new
Array(bucketCount);
for
(i = 0; i < buckets.length; i++) {
buckets[i] = [];
}
// 利用映射函数将数据分配到各个桶中
for
(i = 0; i < arr.length; i++) {
buckets[Math.floor((arr[i] - minValue) / bucketSize)].push(arr[i]);
}
arr.length = 0;
for
(i = 0; i < buckets.length; i++) {
insertionSort(buckets[i]);
// 对每个桶进行排序,这里使用了插入排序
for
(
var
j = 0; j < buckets[i].length; j++) {
arr.push(buckets[i][j]);
}
}
return
arr;
}
|
桶排序最好情况下使用线性时间O(n),桶排序的时间复杂度,取决与对各个桶之间数据进行排序的时间复杂度,因为其它部分的时间复杂度都为O(n)。很显然,桶划分的越小,各个桶之间的数据越少,排序所用的时间也会越少。但相应的空间消耗就会增大。
基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
// LSD Radix Sort
var
counter = [];
function radixSort(arr, maxDigit) {
var
mod = 10;
var
dev = 1;
for
(
var
i = 0; i < maxDigit; i++, dev *= 10, mod *= 10) {
for
(
var
j = 0; j < arr.length; j++) {
var
bucket = parseInt((arr[j] % mod) / dev);
if
(counter[bucket]==
null
) {
counter[bucket] = [];
}
counter[bucket].push(arr[j]);
}
var
pos = 0;
for
(
var
j = 0; j < counter.length; j++) {
var
value =
null
;
if
(counter[j]!=
null
) {
while
((value = counter[j].shift()) !=
null
) {
arr[pos++] = value;
}
}
}
}
return
arr;
}
|
基数排序基于分别排序,分别收集,所以是稳定的。但基数排序的性能比桶排序要略差,每一次关键字的桶分配都需要O(n)的时间复杂度,而且分配之后得到新的关键字序列又需要O(n)的时间复杂度。假如待排数据可以分为d个关键字,则基数排序的时间复杂度将是O(d*2n) ,当然d要远远小于n,因此基本上还是线性级别的。
基数排序的空间复杂度为O(n+k),其中k为桶的数量。一般来说n>>k,因此额外空间需要大概n个左右。
</div>
<div class="postDesc">posted @ <span id="post-date">2017-10-15 23:43</span> <a href="https://www.cnblogs.com/onepixel/">一像素</a> 阅读(<span id="post_view_count">129890</span>) 评论(<span id="post_comment_count">30</span>) <a href="https://i.cnblogs.com/EditPosts.aspx?postid=7674659" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(7674659);return false;">收藏</a></div>
</div>
<script type="text/javascript">var allowComments=true,cb_blogId=256889,cb_entryId=7674659,cb_blogApp=currentBlogApp,cb_blogUserGuid='c25fd669-c698-e511-9fc1-ac853d9f53cc',cb_entryCreatedDate='2017/10/15 23:43:00';loadViewCount(cb_entryId);var cb_postType=1;</script>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3922815" class="layer">#1楼</a><a name="3922815" id="comment_anchor_3922815"></a> <span class="comment_date">2018-03-14 16:50</span> <a id="a_comment_author_3922815" href="https://www.cnblogs.com/xuyiqing/" target="_blank">一清</a> <a href="http://msg.cnblogs.com/send/%E4%B8%80%E6%B8%85" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3922815" class="blog_comment_body">总体做的很不错,希尔排序的代码为什么运行后不是需要的结果?</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3922815,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3922815,'Bury',this)">反对(0)</a></div><span id="comment_3922815_avatar" style="display:none;">http://pic.cnblogs.com/face/1312707/20180713142841.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3928050" class="layer">#2楼</a><a name="3928050" id="comment_anchor_3928050"></a> <span class="comment_date">2018-03-20 10:52</span> <a id="a_comment_author_3928050" href="https://www.cnblogs.com/cloundSunshine/" target="_blank">_hungryBoy</a> <a href="http://msg.cnblogs.com/send/_hungryBoy" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3928050" class="blog_comment_body">请问博主的动画效果是怎么做的?</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3928050,'Digg',this)">支持(3)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3928050,'Bury',this)">反对(0)</a></div><span id="comment_3928050_avatar" style="display:none;">http://pic.cnblogs.com/face/862051/20160401112141.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3936397" class="layer">#3楼</a><a name="3936397" id="comment_anchor_3936397"></a> <span class="comment_date">2018-03-29 09:16</span> <a id="a_comment_author_3936397" href="https://www.cnblogs.com/zitayang/" target="_blank">筱筱汀</a> <a href="http://msg.cnblogs.com/send/%E7%AD%B1%E7%AD%B1%E6%B1%80" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3936397" class="blog_comment_body">动图显示得好清晰!感谢博主!</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3936397,'Digg',this)">支持(1)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3936397,'Bury',this)">反对(0)</a></div><span id="comment_3936397_avatar" style="display:none;">http://pic.cnblogs.com/face/991862/20160804104849.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3937930" class="layer">#4楼</a><a name="3937930" id="comment_anchor_3937930"></a> <span class="comment_date">2018-03-30 15:42</span> <a id="a_comment_author_3937930" href="https://www.cnblogs.com/AlvinZH/" target="_blank">AlvinZH</a> <a href="http://msg.cnblogs.com/send/AlvinZH" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3937930" class="blog_comment_body">希尔排序的平均时间复杂度少了一个平方吧,代码也写错了,代码可以这样写:<br><div class="cnblogs_Highlighter sh-gutter"><div><div id="highlighter_366459" class="syntaxhighlighter cpp"><div class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="cpp keyword bold">void</code> <code class="cpp plain">shellSort(vector<</code><code class="cpp color1 bold">int</code><code class="cpp plain">> &nums) {</code></div><div class="line number2 index1 alt1"><code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">n = nums.size();</code></div><div class="line number3 index2 alt2"><code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">gap, i, j;</code></div><div class="line number4 index3 alt1"><code class="cpp spaces"> </code> </div><div class="line number5 index4 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">for</code><code class="cpp plain">(gap = n/2; gap > 0; gap /= 2) {</code></div><div class="line number6 index5 alt1"><code class="cpp spaces"> </code><code class="cpp comments">//插入排序简洁写法 </code></div><div class="line number7 index6 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">for</code><code class="cpp plain">(i = gap; i < n; i++) {</code></div><div class="line number8 index7 alt1"><code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">num = nums[i];</code></div><div class="line number9 index8 alt2"><code class="cpp spaces"> </code><code class="cpp keyword bold">for</code><code class="cpp plain">(j = i-gap; j>=0 && nums[j]>num; j-=gap)</code></div><div class="line number10 index9 alt1"><code class="cpp spaces"> </code><code class="cpp plain">nums[j+gap] = nums[j];</code></div><div class="line number11 index10 alt2"><code class="cpp spaces"> </code><code class="cpp plain">nums[j+gap] = num;</code></div><div class="line number12 index11 alt1"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number13 index12 alt2"><code class="cpp spaces"> </code><code class="cpp plain">}</code></div><div class="line number14 index13 alt1"><code class="cpp plain">}</code></div></div></td></tr></tbody></table></div></div></div></div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3937930,'Digg',this)">支持(7)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3937930,'Bury',this)">反对(2)</a></div><span id="comment_3937930_avatar" style="display:none;">http://pic.cnblogs.com/face/1152056/20170423104335.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3943863" class="layer">#5楼</a><a name="3943863" id="comment_anchor_3943863"></a> <span class="comment_date">2018-04-07 08:33</span> <a id="a_comment_author_3943863" href="http://home.cnblogs.com/u/876891/" target="_blank">fanjiyue</a> <a href="http://msg.cnblogs.com/send/fanjiyue" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3943863" class="blog_comment_body">感谢博主(为了这四个字我登陆了半天)</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3943863,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3943863,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3944473" class="layer">#6楼</a><a name="3944473" id="comment_anchor_3944473"></a>[<span class="louzhu">楼主</span>] <span class="comment_date">2018-04-07 22:48</span> <a id="a_comment_author_3944473" href="https://www.cnblogs.com/onepixel/" target="_blank">一像素</a> <a href="http://msg.cnblogs.com/send/%E4%B8%80%E5%83%8F%E7%B4%A0" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3944473" class="blog_comment_body"><a href="#3943863" title="查看所回复的评论" onclick="commentManager.renderComments(0,50,3943863);">@</a>
fanjiyue
谢谢!
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3953963" class="layer">#7楼</a><a name="3953963" id="comment_anchor_3953963"></a> <span class="comment_date">2018-04-17 17:23</span> <a id="a_comment_author_3953963" href="https://www.cnblogs.com/ArsenalfanInECNU/" target="_blank">青山牧云人</a> <a href="http://msg.cnblogs.com/send/%E9%9D%92%E5%B1%B1%E7%89%A7%E4%BA%91%E4%BA%BA" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3953963" class="blog_comment_body">冒泡排序的实现有点问题,按照目前的代码只能是O(n*n)的时间复杂度。<br>应该设置一个标志位检测是否发生数据交换,如果没有发生数据交换,直接完成排序,这样才有可能达到O(n)的时间复杂度。</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3953963,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3953963,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3954636" class="layer">#8楼</a><a name="3954636" id="comment_anchor_3954636"></a> <span class="comment_date">2018-04-18 13:52</span> <a id="a_comment_author_3954636" href="https://www.cnblogs.com/OranBlog/" target="_blank">Oran</a> <a href="http://msg.cnblogs.com/send/Oran" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3954636" class="blog_comment_body">希尔排序的实现也有问题, 4 3 6 5 这样的序列的排序结果这个算法的结果是 4 3 5 6</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3954636,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3954636,'Bury',this)">反对(0)</a></div><span id="comment_3954636_avatar" style="display:none;">http://pic.cnblogs.com/face/981164/20160621213755.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3962414" class="layer">#9楼</a><a name="3962414" id="comment_anchor_3962414"></a> <span class="comment_date">2018-04-27 13:41</span> <a id="a_comment_author_3962414" href="http://home.cnblogs.com/u/1374275/" target="_blank">danboard</a> <a href="http://msg.cnblogs.com/send/danboard" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3962414" class="blog_comment_body">请问博主可以转载吗?</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3962414,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3962414,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3967812" class="layer">#10楼</a><a name="3967812" id="comment_anchor_3967812"></a> <span class="comment_date">2018-05-05 11:50</span> <a id="a_comment_author_3967812" href="http://home.cnblogs.com/u/1285468/" target="_blank">LZA</a> <a href="http://msg.cnblogs.com/send/LZA" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3967812" class="blog_comment_body">特地注册滚来感谢博主!</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3967812,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3967812,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3979785" class="layer">#11楼</a><a name="3979785" id="comment_anchor_3979785"></a> <span class="comment_date">2018-05-22 17:18</span> <a id="a_comment_author_3979785" href="https://www.cnblogs.com/joy-1120/" target="_blank">三十五画生</a> <a href="http://msg.cnblogs.com/send/%E4%B8%89%E5%8D%81%E4%BA%94%E7%94%BB%E7%94%9F" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3979785" class="blog_comment_body">感谢博主</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3979785,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3979785,'Bury',this)">反对(0)</a></div><span id="comment_3979785_avatar" style="display:none;">http://pic.cnblogs.com/face/1248679/20180308094638.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#3982685" class="layer">#12楼</a><a name="3982685" id="comment_anchor_3982685"></a> <span class="comment_date">2018-05-26 13:17</span> <a id="a_comment_author_3982685" href="https://www.cnblogs.com/playburst/" target="_blank">throuthstrom</a> <a href="http://msg.cnblogs.com/send/throuthstrom" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_3982685" class="blog_comment_body">这也太厉害了吧</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3982685,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(3982685,'Bury',this)">反对(0)</a></div><span id="comment_3982685_avatar" style="display:none;">http://pic.cnblogs.com/face/1015655/20180126230539.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4008671" class="layer">#13楼</a><a name="4008671" id="comment_anchor_4008671"></a> <span class="comment_date">2018-06-29 13:57</span> <a id="a_comment_author_4008671" href="https://www.cnblogs.com/merryyou/" target="_blank">longfeiz</a> <a href="http://msg.cnblogs.com/send/longfeiz" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4008671" class="blog_comment_body">习惯性mark</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4008671,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4008671,'Bury',this)">反对(0)</a></div><span id="comment_4008671_avatar" style="display:none;">http://pic.cnblogs.com/face/715840/20150403171822.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4015637" class="layer">#14楼</a><a name="4015637" id="comment_anchor_4015637"></a> <span class="comment_date">2018-07-08 21:41</span> <a id="a_comment_author_4015637" href="http://home.cnblogs.com/u/1423684/" target="_blank">坏坏62</a> <a href="http://msg.cnblogs.com/send/%E5%9D%8F%E5%9D%8F62" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4015637" class="blog_comment_body">这篇博文我要好好的学习,对排序算法一直都没有系统的学习 就知道个大概, 代码也是写不出来。感谢博主</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4015637,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4015637,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4017809" class="layer">#15楼</a><a name="4017809" id="comment_anchor_4017809"></a> <span class="comment_date">2018-07-11 10:59</span> <a id="a_comment_author_4017809" href="http://home.cnblogs.com/u/1436876/" target="_blank">Lin_G_Q</a> <a href="http://msg.cnblogs.com/send/Lin_G_Q" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4017809" class="blog_comment_body">谢谢博主大佬</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4017809,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4017809,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4027705" class="layer">#16楼</a><a name="4027705" id="comment_anchor_4027705"></a> <span class="comment_date">2018-07-24 16:52</span> <a id="a_comment_author_4027705" href="https://www.cnblogs.com/franknihao/" target="_blank">K.Takanashi</a> <a href="http://msg.cnblogs.com/send/K.Takanashi" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4027705" class="blog_comment_body">感觉和博主特别投缘,有些算法好久都没搞懂,今天一下午居然在博主这里连着看懂了好几个哈哈</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4027705,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4027705,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4043563" class="layer">#17楼</a><a name="4043563" id="comment_anchor_4043563"></a> <span class="comment_date">2018-08-15 15:16</span> <a id="a_comment_author_4043563" href="https://www.cnblogs.com/lulin1/" target="_blank">Lulin1</a> <a href="http://msg.cnblogs.com/send/Lulin1" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4043563" class="blog_comment_body">希尔排序有个地方写错了,j 循环里应该是(j >= 0,不是 j>0):<br> for (var j = i-gap; j >= 0 && arr[j]> temp; j-=gap) {<br> arr[j + gap] = arr[j];<br> }</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4043563,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4043563,'Bury',this)">反对(0)</a></div><span id="comment_4043563_avatar" style="display:none;">http://pic.cnblogs.com/face/956674/20161212173725.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4043894" class="layer">#18楼</a><a name="4043894" id="comment_anchor_4043894"></a> <span class="comment_date">2018-08-15 23:03</span> <a id="a_comment_author_4043894" href="https://www.cnblogs.com/CodeWorkerLiMing/" target="_blank">wdliming</a> <a href="http://msg.cnblogs.com/send/wdliming" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4043894" class="blog_comment_body">不错,都有动画。。。</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4043894,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4043894,'Bury',this)">反对(1)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4047613" class="layer">#19楼</a><a name="4047613" id="comment_anchor_4047613"></a> <span class="comment_date">2018-08-21 20:58</span> <a id="a_comment_author_4047613" href="http://home.cnblogs.com/u/1461934/" target="_blank">大数据小白</a> <a href="http://msg.cnblogs.com/send/%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%B0%8F%E7%99%BD" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4047613" class="blog_comment_body">特別喜欢你做的动图,特别形象</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4047613,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4047613,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4047755" class="layer">#20楼</a><a name="4047755" id="comment_anchor_4047755"></a> <span class="comment_date">2018-08-22 09:09</span> <a id="a_comment_author_4047755" href="http://home.cnblogs.com/u/1373035/" target="_blank">烽火离别</a> <a href="http://msg.cnblogs.com/send/%E7%83%BD%E7%81%AB%E7%A6%BB%E5%88%AB" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4047755" class="blog_comment_body">楼主的冒泡排序空间复杂度是O(n)</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4047755,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4047755,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4047768" class="layer">#21楼</a><a name="4047768" id="comment_anchor_4047768"></a> <span class="comment_date">2018-08-22 09:25</span> <a id="a_comment_author_4047768" href="http://home.cnblogs.com/u/1373035/" target="_blank">烽火离别</a> <a href="http://msg.cnblogs.com/send/%E7%83%BD%E7%81%AB%E7%A6%BB%E5%88%AB" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4047768" class="blog_comment_body">一般用作嵌套循环的变量都会在循环外进行声明,减少时间复杂度</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4047768,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4047768,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4050258" class="layer">#22楼</a><a name="4050258" id="comment_anchor_4050258"></a> <span class="comment_date">2018-08-24 22:00</span> <a id="a_comment_author_4050258" href="https://www.cnblogs.com/gitnull/" target="_blank">git-null</a> <a href="http://msg.cnblogs.com/send/git-null" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4050258" class="blog_comment_body">总结的很厉害啊,简单明了</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4050258,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4050258,'Bury',this)">反对(0)</a></div><span id="comment_4050258_avatar" style="display:none;">http://pic.cnblogs.com/face/1401036/20180723214221.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4053157" class="layer">#23楼</a><a name="4053157" id="comment_anchor_4053157"></a> <span class="comment_date">2018-08-29 11:34</span> <a id="a_comment_author_4053157" href="https://www.cnblogs.com/flyfeifei66/" target="_blank">咖飞哥</a> <a href="http://msg.cnblogs.com/send/%E5%92%96%E9%A3%9E%E5%93%A5" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4053157" class="blog_comment_body">冒泡排序最好时间复杂度不对吧</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4053157,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4053157,'Bury',this)">反对(0)</a></div><span id="comment_4053157_avatar" style="display:none;">http://pic.cnblogs.com/face/u69089.jpg</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4054413" class="layer">#24楼</a><a name="4054413" id="comment_anchor_4054413"></a> <span class="comment_date">2018-08-30 16:50</span> <a id="a_comment_author_4054413" href="http://home.cnblogs.com/u/913636/" target="_blank">编程萝卜</a> <a href="http://msg.cnblogs.com/send/%E7%BC%96%E7%A8%8B%E8%90%9D%E5%8D%9C" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4054413" class="blog_comment_body">怎么会有这么优秀的人?!</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4054413,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4054413,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4057754" class="layer">#25楼</a><a name="4057754" id="comment_anchor_4057754"></a> <span class="comment_date">2018-09-04 16:41</span> <a id="a_comment_author_4057754" href="https://www.cnblogs.com/EasonDongH/" target="_blank">EasonDongH</a> <a href="http://msg.cnblogs.com/send/EasonDongH" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4057754" class="blog_comment_body">只想问动图怎么做?自己写的笔记好丑</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4057754,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4057754,'Bury',this)">反对(0)</a></div><span id="comment_4057754_avatar" style="display:none;">http://pic.cnblogs.com/face/1163285/20170915141938.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4061211" class="layer">#26楼</a><a name="4061211" id="comment_anchor_4061211"></a> <span class="comment_date">2018-09-07 23:32</span> <a id="a_comment_author_4061211" href="https://www.cnblogs.com/lxy1994/" target="_blank">不曾走远~~</a> <a href="http://msg.cnblogs.com/send/%E4%B8%8D%E6%9B%BE%E8%B5%B0%E8%BF%9C~~" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4061211" class="blog_comment_body">感谢博主的分享,特别是动画的制作,很清晰</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4061211,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4061211,'Bury',this)">反对(0)</a></div><span id="comment_4061211_avatar" style="display:none;">http://pic.cnblogs.com/face/1472922/20180824114251.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4068579" class="layer">#27楼</a><a name="4068579" id="comment_anchor_4068579"></a> <span class="comment_date">2018-09-16 22:29</span> <a id="a_comment_author_4068579" href="https://www.cnblogs.com/weiqifa/" target="_blank">公众号;嵌入式Linux</a> <a href="http://msg.cnblogs.com/send/%E5%85%AC%E4%BC%97%E5%8F%B7%EF%BC%9B%E5%B5%8C%E5%85%A5%E5%BC%8FLinux" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4068579" class="blog_comment_body">你好,可以转载吗?</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4068579,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4068579,'Bury',this)">反对(0)</a></div><span id="comment_4068579_avatar" style="display:none;">http://pic.cnblogs.com/face/1480614/20180904085216.png</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4073893" class="layer">#28楼</a><a name="4073893" id="comment_anchor_4073893"></a> <span class="comment_date">2018-09-21 20:05</span> <a id="a_comment_author_4073893" href="http://home.cnblogs.com/u/1490867/" target="_blank">LLcj</a> <a href="http://msg.cnblogs.com/send/LLcj" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4073893" class="blog_comment_body">只是看到动图就可以大概理解这些排序算法了,至于博主的实现是否完全正确,已经不是很重要了,毕竟不能什么都等别人教,<br>先保存一份,之后再细看。<br>另外希望博主回来看看,感觉博主就是写完就不管了,这么多的评论没有搭理<br>~~~</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4073893,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4073893,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4075443" class="layer">#29楼</a><a name="4075443" id="comment_anchor_4075443"></a> <span class="comment_date">2018-09-25 12:08</span> <a id="a_comment_author_4075443" href="http://home.cnblogs.com/u/942520/" target="_blank">AaronMars</a> <a href="http://msg.cnblogs.com/send/AaronMars" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4075443" class="blog_comment_body">博主你好,请问可以借用你的动图吗?谢谢了!</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4075443,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4075443,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions"></span>
</div>
<a href="#4078718" class="layer">#30楼</a><a name="4078718" id="comment_anchor_4078718"></a><span id="comment-maxId" style="display:none;">4078718</span><span id="comment-maxDate" style="display:none;">2018/9/28 10:15:47</span> <span class="comment_date">2018-09-28 10:15</span> <a id="a_comment_author_4078718" href="http://home.cnblogs.com/u/1473877/" target="_blank">nkulpj</a> <a href="http://msg.cnblogs.com/send/nkulpj" title="发送站内短消息" class="sendMsg2This"> </a>
</div>
<div class="feedbackCon">
<div id="comment_body_4078718" class="blog_comment_body">特地注册账号 感谢博主,另外请问一下 可以转载和引用博主的动图吗?看了这么多就博主这个图和讲解最详细,易懂!!!</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(4078718,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" onclick="return voteComment(4078718,'Bury',this)">反对(0)</a></div>
</div>
</div>
<div id="comments_pager_bottom"></div></div><script type="text/javascript">var commentManager = new blogCommentManager();commentManager.renderComments(0);</script>
</div>