我正在尝试学习T-SQL编程,我注意到我的以下代码有一个错误。这段代码是为了学习如何在没有order by的情况下进行排序,它看起来像是冒泡排序算法。
我首先创建了表,并在尝试进行排序后插入随机数
代码:
CREATE TABLE #NumbersArray
(
ArrayIndex INT PRIMARY KEY,
Value INT
)
GO
INSERT INTO #NumbersArray(ArrayIndex, Value)
SELECT 0, 5
UNION ALL
SELECT 1, 1
UNION ALL
SELECT 2, 3
UNION ALL
SELECT 3, 4
UNION ALL
SELECT 4, 2
SELECT * FROM #NumbersArray
GO
DECLARE @CurrentIndex INT,
@MaxIndex INT,
@swapoccured BIT
SET @swapoccured = 1
SET @MaxIndex = (SELECT COUNT(*) - 1 FROM #NumbersArray)
WHILE (@swapoccured = 1)
BEGIN
SET @swapoccured = 0
SET @CurrentIndex = 0
WHILE (@CurrentIndex < @MaxIndex)
DECLARE @value1 INT
DECLARE @value2 INT
BEGIN -- Mistake was here. I put the begin in wrong place
SET @value1 = (SELECT Value FROM #NumbersArray WHERE ArrayIndex = @CurrentIndex)
SET @value2 = (SELECT Value FROM #NumbersArray WHERE ArrayIndex = @CurrentIndex + 1)
IF (@value1 > @value2)
BEGIN
UPDATE #NumbersArray
SET Value = @value2
WHERE ArrayIndex = @CurrentIndex
UPDATE #NumbersArray
SET Value = @value1
WHERE ArrayIndex = @CurrentIndex + 1
SET @swapoccured = 1
END
SET @CurrentIndex = @CurrentIndex + 1
END
END
SELECT * FROM #NumbersArray
所以我认为我的代码库在第二次排序的中间,因为我的while从来没有完成,但是我可以确定问题是什么。
https://stackoverflow.com/questions/54917021
复制相似问题