推荐链接:https://blog.csdn.net/lyhkmm/article/details/78920769
链接中很详细的说明了八种常见排序算法的思路和代码实现。
面试时通常会问到排序算法,所以就几种排序算法进行时间复杂度的比较和代码的实现。
一、时间复杂度
二、选择排序、冒泡排序、插入排序和快速排序的代码实现。
public class PaiXu {
public static void main(String[] args) {
int []num = {9,5,7,6,3,2,8};
int temp,i;
//冒泡排序 每次确定一个值放在后面
for(i=0;i<num.length;i++)
for(int j=0;j<num.length-i-1;j++) {
if(num[j]>num[j+1]) {
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
for(i=0;i<num.length-1;i++) {
System.out.print(num[i]+" ");
}
System.out.println(num[i]);
//选择排序 每次确定一个值放在前面
for(i=0;i<num.length;i++)
for(int j=i+1;j<num.length;j++) {
if(num[i]>num[j]) {
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
for(i=0;i<num.length-1;i++) {
System.out.print(num[i]+" ");
}
System.out.println(num[i]);
//插入排序
//第一个值固定,从第二个开始判断,第二个比第一个大就插入到第一个后面,第二个比第一个小菊插入到第一个的前面。
for(i=1;i<num.length;i++) {
int j;
for(j=i-1;j>=0 && num[j]>num[i];j--) {
}
temp = num[i];
for(int k=i;k>j+1;k--) {
num[k] = num[k-1];
}
num[j+1] = temp;
}
for(i=0;i<num.length-1;i++) {
System.out.print(num[i]+" ");
}
System.out.println(num[i]);
//快速排序
PaiXu.Quike(num,0,num.length-1);
for(i=0;i<num.length-1;i++) {
System.out.print(num[i]+" ");
}
System.out.println(num[i]);
}
//快速排序使用递归
private static void Quike(int[] num,int start,int end) {
if(start > end)
return;
int i = start;
int j = end;
int temp = num[i];
int flag;
while(i != j) {
while(i<j && num[j]>=temp)
j--;
while(i<j && num[i]<=temp)
i++;
if(i<j) {
flag = num[i];
num[i] = num[j];
num[j] = flag;
}
}
flag = num[i];
num[i] = num[start];
num[start] = flag;
Quike(num,start,i-1);
Quike(num,j+1,end);
}
}