前段时间回顾了下基本的排序算法,然后根据算法描述用java语言来实现了几个简单的算法,下面总结一下:
基本排序算法:
首先先介绍几种简单的排序算法
1.冒泡排序
冒泡排序法,如名字所述,每次找出最大(最小)的数,像泡泡一样往上冒,直到最后一个数,这样就能排序完成。
如果有n个数,那么需要进行循环的次数便为n*(n+1)/2,时间复杂度为o(n^2).
下面是简要代码:
public static void
sortAsc(
int
[] tem) {
int
i =
0
;
int
j =
0
;
int
t =
0
;
for
(i = tem.
length
; i >
0
; i--) {
for
(j =
0
; j < i -
1
; j++) {
if
(tem[j] > tem[j +
1
]) {
t = tem[j +
1
];
tem[j +
1
] = tem[j];
tem[j] = t;
}
}
for
(
int
k : tem) {
System.
out
.print(k +
" "
);
}
System.
out
.println(
""
);
}
}
2.选择排序法:
选择排序,从第一个数开始,每次选择剩下的数中最大(小)的数进行交互位置,直到最后一个数。
如果有n个数,那么需要进行交互位置的次数便为n*(n+1)/2,时间复杂度为o(n^2).
下面是简要代码:
public static void
sortAsc(
int
[] tem){
int
i =
0
;
int
j=
0
;
int
temindex =
0
;
int
t=
0
;
for
(i=
0
;i<tem.
length
;i++){
temindex =i;
for
(j = i+
1
; j <tem.
length
; j++) {
if
(tem[j]<tem[temindex]){
temindex=j;
}
}
t= tem[i];
tem[i] = tem[temindex];
tem[temindex] = t;
for
(
int
k : tem) {
System.
out
.print(k +
" "
);
}
System.
out
.println(
""
);
}
}
3.插入排序
插入排序,在第二个数后,在已排好序中的数列中查找应该要插入的位置,然后进行位置挪移,不断形成新的有序数列直到最后一个数。
如果有n个数,则需要进行排序的次数便为n*n/2,时间复杂度为o(n^2)
简要代码如下:
public static void
sortAsc(
int
[] tem){
int
i;
int
j;
int
t;
for
( i =
0
; i <tem.
length
-
1
; i++) {
t = tem[i+
1
];
for
(j = i; j >=
0
; j--) {
if
(t>tem[j]){
break
;
}
tem[j+
1
]=tem[j];
}
tem[j+
1
] = t;
for
(
int
k : tem) {
System.
out
.print(k +
" "
);
}
System.
out
.println(
""
);
}
}
最后总结一下,这三种排序算法思路都比较简单,因此时间复杂度其实算比较高的,在性能要求比较高的场景中应用并不算特别多。但是入门非常容易。