T SQL單向氣泡排序演算法

2021-03-31 08:56:29 字數 1840 閱讀 2217

--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次 外迴圈,最後一次不用再做比較了 每次從頭到末尾沒有確定的資料中找最大的 內迴圈 做法就是比較相鄰兩個元素的大小,...