排序算法

排序算法

冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养 算法重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,这样越大的元素会经由交换慢慢“浮”到数列的顶端。

优化冒泡算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.Arrays;

public class Bubblesort {

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr= {32,42,6,4,48,52,1,74,58,12,5,41,85};
int t;
for(int j=0;j<arr.length-1;j++) {
boolean flag=true;
for(int i=0;i<arr.length-1-j;i++)
{
if(arr[i]>arr[i+1])
{
t=arr[i+1];
arr[i+1]=arr[i];
arr[i]=t;
flag =false;
}
System.out.println(Arrays.toString(arr));
}

System.out.println("------------------------------------------------------------------");
if(flag==true)
break;

}System.out.println(Arrays.toString(arr));

}

}

快速排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class QuickSort {
public static void quickSort(int[] arr,int left,int right){
int i,j,temp,t;
if(left>=right){
return;
}
i=left;
j=right;
temp = arr[left];

while (i<j) {
while (temp<=arr[j]&&i<j) {
j--;
}
while (temp>=arr[i]&&i<j) {
i++;
}
//如果满足条件则交换
if (i<j) {
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
//交换位置
arr[left] = arr[i];
arr[i] = temp;
//递归调用左半数组
quickSort(arr, left, j-1);
//递归调用右半数组
quickSort(arr, j+1, right);
}

public static void main(String[] args){
int[] arr = {10,9,45645,33,25,62,3,36,2,1,8,78,188};
quickSort(arr, 0, arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
原创技术分享,您的支持将鼓励我继续创作
0%