--2004-09-16
--groundsel
--單向氣泡排序演算法:從上到下
create procedure sp_bubble_sort
@id varchar(8000) --以逗號分隔
ascreate table #order
(id int identity(1,1),value int)
declare @i **allint,
@len **allint,
@charindex **allint,
@value1 **allint,
@value2 **allint,
@flag bit
select @i = 0
select @len = len(@id)
--將字串轉為臨時表
while @i < @len
begin
select @charindex = charindex(',',@id)
if @charindex <> 0
begin
insert into #order(value)
select left(@id,@charindex - 1)
select @id = right(@id,len(@id) - @charindex)
select @i = @i + @charindex
end
else
begin
insert into #order(value)
select @id
select @i = @len
endend
--@flag標誌排序是否完成
set @flag = 1
--迴圈的次數即為排序的趟數
while isnull(@flag,0) = 1
begin
set @i = 1
set @flag = 0
set @value1 = null
set @value2 = null
declare mycur cursor for select value from #order
open mycur
fetch next from mycur into @value1
while @@fetch_status = 0
begin
select @value2 = value from #order where id = @i + 1
if @value1 > @value2
begin
set @flag = 1
update #order set value = @value2 where id = @i
update #order set value = @value1 where id = @i + 1
endselect @i = @i + 1
select @value2 = null
fetch next from mycur into @value1
endclose mycur
deallocate mycur
endset @i = 0
set @id = ''
select @id = @id + cast(value as varchar(20)) + ','
from #order
select left(@id,len(@id) - 1)
goexecute sp_bubble_sort '23,6,2,12,19,-6'
----------------
-6,2,6,12,19,23
雙向氣泡排序 和 單向氣泡排序 演算法分析比較
假設單向氣泡排序也是 在如果沒有交換髮生的情況下則終止 即changeflag false的情況下 以下是單向氣泡排序 1 最差情況 假設輸入打下為n 1 單向排序 需要進行n次外迴圈,n次changeflag false 賦值和後面的比較判斷,即2 n。每次外迴圈有n i 1次內迴圈,內迴圈總數為...
氣泡排序演算法 C 氣泡排序演算法排序詳解
氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...
氣泡排序 氣泡排序演算法優化
常用的排序演算法主要包括 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 簡單選擇排序 堆排序快速排序 4 歸併排序其中,氣泡排序算是最簡單的一種排序演算法 public class bubble int temp 0 for int i 0 iarr j 1 ...
排序演算法 氣泡排序
一.氣泡排序的過程 升值排序 1.將第一個記錄的關鍵字與第二個記錄的關鍵字進行比較,若key 1 key 2 則交換。然後比較第二個與第三個,依此類推,直到第n 1個與第n個比較為止,第一趟排序完後,記錄最大的關鍵字會被排在最後面。2.將記錄的前n 1個關鍵字進行第二趟比較交換,直到前n 1箇中最大...
排序演算法 氣泡排序
從基礎重新抓起。氣泡排序 每次從陣列頭到尾選出最大或者最小的,排到尾部或者頭部。以排序結果從小到大為例 每次從陣列中把最大的調換到末尾。eg.元素個數 count,需要找count 1次 外迴圈,最後一次不用再做比較了 每次從頭到末尾沒有確定的資料中找最大的 內迴圈 做法就是比較相鄰兩個元素的大小,...