首页
IT
登录
6mi
u
盘
搜
搜 索
IT
冒泡排序
冒泡排序
xiaoxiao
2021-03-25
105
/**
* Created on 2017/3/7.
* 冒泡排序:冒泡排序又称为交换排序,比较相邻元素,若不符合要求,则对调后再进行下一个元素的比较,
* 如此扫描一次后就可确保最后一个元素位于正确的顺序,接着在逐步进行第二次遍历,直到完成所有元素的排序关系为止。
*/
class
BSort{
private
BSort
(){}
public static int
[]
Bubble_Sort_Descend
(
int
[]array){
//降序排列
int
i
,
j
,
ex
;
for
(i = array.
length
-
1
;
i>
0
;
i--){
for
(j =
0
;
j<i
;
j++){
if
(array[j]<array[j+
1
]){ ex = array[j]
;
array[j] = array[j+
1
]
;
array[j+
1
] = ex
;
} } }
return
array
;
}
public static int
[]
Bubble_Sort_Ascend
(
int
[] array){
//升序排列
int
i
,
j
,
ex
;
//ex用作交换空间
for
(i = array.
length
-
1
;
i>
0
;
i--){
for
(j =
0
;
j<i
;
j++){
if
(array[j]>array[j+
1
]){ ex = array[j]
;
array[j] = array[j+
1
]
;
array[j+
1
] = ex
;
} } }
return
array
;
}
//以上两种写法都会固定的执行n(n-1)/2次,即对于已经符合要求的序列,还会继续执行,所以我们需要加入一个判断,
//判断序列是否已经符合要求,提前终止,提高运行效率
public static int
[]
Bubble_Sort_Better
(
int
[] array){
int
i
,
j
,
ex
,
flag
;
for
(i = array.
length
-
1
;
i>
0
;
i--){ flag =
0
;
//用flag来标记是否有数据交换
for
(j =
0
;
j<i
;
j++){
if
(array[j]>array[j+
1
]){ ex = array[j]
;
array[j] = array[j+
1
]
;
array[j+
1
] = ex
;
flag++
;
} }
if
(flag==
0
){
break;
} }
return
array
;
}
public static int
[]
Bubble_Sort_Other
(
int
[] array){
//严格来说这种写法不算冒泡排序
int
i
,
j
,
ex
;
//ex用作交换空间
for
(i =
0
;
i<array.
length
-
1
;
i++){
for
(j =
0
;
j<array.
length
-
1
;
j++){
//若条件写文j<array.length,会出现异常,后面j+1会超出最大长度
if
(array[j]>array[j+
1
]){ ex = array[j]
;
array[j] = array[j+
1
]
;
array[j+
1
] = ex
;
} } }
return
array
;
} }
转载请注明原文地址: https://ju.6miu.com/read-4127.html
技术
最新回复
(
0
)