使用T-SQL模仿程序实现冒泡排序
2015-10-05 20:39
369 查看
/*
Project: 此次研究的课题是模仿程序实现冒泡排序(数据库只需要排序)
*/
--1.数据库实现冒泡排序(只需要按照要求升序或倒序排列即可)
--2.数据库模仿程序实现冒泡排序
--a.申明表
--a.1 临时数据表
declare @tbl table(
ID int identity(1,1) primary key not null,
Num int not null
)
--b.插入临时数据
insert into @tbl(Num)
select 30 as num union all
select 5 as num union all
select 20 as num union all
select 1 as num union all
select 16 as num union all
select 7 as num
select * from @tbl
--c.实现冒泡排序过程
declare @cnt int ,@index int
select @cnt = count(0) from @tbl
set @index = 1
while(@index <=@cnt) begin --d.外层控制循环的次数(按照升序)
declare @index_2 int ,@cnt_2 int,@pre_Num int , @pre_ID int,
@cur_Num int , @cur_ID int
set @index_2 =1
select @cnt_2 = count(0) from @tbl
while(@index_2 <= @cnt_2) begin --e.控制顺序
select @cur_Num = Num,@cur_ID = ID from @tbl where ID = @index_2
if(@index_2 = 1) begin
set @pre_ID = @index_2
set @pre_Num = @cur_Num
end else begin
--f.交换彼此的位置
if(@cur_Num < @pre_Num) begin
update @tbl set Num = @pre_Num
where ID = @index_2
update @tbl set Num = @cur_Num
where ID = @pre_ID
set @pre_ID = @index_2
end
else begin
set @pre_Num = @cur_Num
set @pre_ID = @index_2
set @index_2 +=1
continue
end
end
set @index_2 +=1
end
set @index +=1
end
select * from @tbl
Project: 此次研究的课题是模仿程序实现冒泡排序(数据库只需要排序)
*/
--1.数据库实现冒泡排序(只需要按照要求升序或倒序排列即可)
--2.数据库模仿程序实现冒泡排序
--a.申明表
--a.1 临时数据表
declare @tbl table(
ID int identity(1,1) primary key not null,
Num int not null
)
--b.插入临时数据
insert into @tbl(Num)
select 30 as num union all
select 5 as num union all
select 20 as num union all
select 1 as num union all
select 16 as num union all
select 7 as num
select * from @tbl
--c.实现冒泡排序过程
declare @cnt int ,@index int
select @cnt = count(0) from @tbl
set @index = 1
while(@index <=@cnt) begin --d.外层控制循环的次数(按照升序)
declare @index_2 int ,@cnt_2 int,@pre_Num int , @pre_ID int,
@cur_Num int , @cur_ID int
set @index_2 =1
select @cnt_2 = count(0) from @tbl
while(@index_2 <= @cnt_2) begin --e.控制顺序
select @cur_Num = Num,@cur_ID = ID from @tbl where ID = @index_2
if(@index_2 = 1) begin
set @pre_ID = @index_2
set @pre_Num = @cur_Num
end else begin
--f.交换彼此的位置
if(@cur_Num < @pre_Num) begin
update @tbl set Num = @pre_Num
where ID = @index_2
update @tbl set Num = @cur_Num
where ID = @pre_ID
set @pre_ID = @index_2
end
else begin
set @pre_Num = @cur_Num
set @pre_ID = @index_2
set @index_2 +=1
continue
end
end
set @index_2 +=1
end
set @index +=1
end
select * from @tbl
相关文章推荐
- redis client protocol 分解
- oracle6
- Oracle外键(Foreign Key)使用详细的说明(一)
- SQL Server的 排序规则(collation)冲突和解决方案
- Redis Persistence
- mysql并发问题记录
- 【数据库】MFC ODBC(一)
- jdbc数据库连接
- ORACLE函数
- 平易近人、兼容并蓄——Spark SQL 1.3.0概览
- redis3.0
- redis 添加访问密码
- c3p0数据源连接数据库
- Redis
- 工作总结数据库集群
- SQL server 数据库中的数据操作
- [笔试时]SQL练练手
- sessionFactory 生成数据库表
- 数据库更新数据时的传值问题
- iOS 开发之封装一个 sqlite3 数据库