単純な集計ソート
ええ...私はずっとデータ構造を書いているのが少し退屈かもしれないことに気づいた.そこで私はよく使うアルゴリズムを書くつもりです.それに複雑な私も
今日は、簡単な集計ソートを書きます.泡が出たり並べ替えたりしたいと思っていました.しかし、書くときは、よく終わったので、面白いソートアルゴリズムを書くことにしました.
並べ替えて並べ替えて、並べ替えのアルゴリズムを熟知するのはすべてよく知らないことはできないでしょう.だから、私は理論をたくさん話しません(実は、私もよく分かりません).要するに、集計ソートの核心思想を理解すればいい.もちろん、pythonを使用して実装します.私は最近pythonを勉強しているからです.pythonは面白いと思います
問題があれば、指摘してください.
コードは次のとおりです.
今日は、簡単な集計ソートを書きます.泡が出たり並べ替えたりしたいと思っていました.しかし、書くときは、よく終わったので、面白いソートアルゴリズムを書くことにしました.
並べ替えて並べ替えて、並べ替えのアルゴリズムを熟知するのはすべてよく知らないことはできないでしょう.だから、私は理論をたくさん話しません(実は、私もよく分かりません).要するに、集計ソートの核心思想を理解すればいい.もちろん、pythonを使用して実装します.私は最近pythonを勉強しているからです.pythonは面白いと思います
問題があれば、指摘してください.
コードは次のとおりです.
# -*- coding: cp936 -*-
#---------------------------------------------
#
#author chile
#version 1.0
#since
#date 2014-02-18
#desc
#
#
#
#---------------------------------------------
class MergeSort:
def __init__(self):
self.src = []
self.help = []
def sort(self,src):
if len(src) == 0:
return
self.src = src
self.initTarget()
low , high = 0 , len(src) - 1
self.megersort(low,high)
# python ,
def initTarget(self):
target = self.help
for i in range(len(self.src)):
target.append(0)
#
def megersort(self,low,high):
if low >= high:
return
mid = low + (high - low ) / 2
self.megersort(low,mid)
self.megersort(mid+1,high)
self.merge(low,mid,high)
# ( , , )
def merge(self,low ,mid , high):
src , help = self.src , self.help
for i in range(low,high+1):
help[i] = src[i]
i , j = low , mid + 1
for k in range(low,high + 1):
if i > mid:
src[k] = help[j]
j += 1
elif j > high:
src[k] = help[i]
i += 1
elif help[i] < help[j]:
src[k] = help[i]
i += 1
else:
src[k] = help[j]
j += 1
val = range(15,2,-1)
print val
sort = MergeSort()
sort.sort(val)
print sort.src