冒泡排序
冒泡排序是面试最基础的内容一定要会
冒泡排序的思想
对于一组数组 针对从大到小 每次循环一个一个比较找到一个最大的数放置末尾,后一次循环的数个数将会比前一次少1,因为已经确定了一个数的位置,以此下去将会排完所有数据。
来张图看把清楚点
冒泡排序通常使用两个for循环
第一个for循环则是确定循环轮数
第二个for循环则是确定一个最大数
具体实现
//数组名字 a
for(int i = 0 ; i<a.length ; i++){
for(int j = 0 ;j<a.length-1-i ; j++){
if(a[j]>a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
这便是冒泡排序了。
快速排序
接下来是快速排序,就有点进阶了。
快速排序的思想
快速排序是对于冒泡排序的一种改进,它的原理是:
对于给定的一组记录,选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分,直到序列中的所有记录均有序为止。
再引用一张图片解释下
代码实现
public class quickSort{
public static void sort(int[] a, int low, int height){
int i,j,index;
if(low > height)
return;
i = low;
j = height;
index = a[i]; //使用第一个数作为基准数
while( i < low ){
while (i < j && a[j] >= index)
j--;
if (i < j)
a[i++] = a[j];// 用比基准小的记录替换低位记录
while (i < j && a[i] < index)
i++;
if (i < j) // 用比基准大的记录替换高位记录
a[j--] = a[i];
}
a[i] = index;// 将基准数值替换回 a[i]
sort(a, low, i - 1); // 对低子表进行递归排序
sort(a, i + 1, hight); // 对高子表进行递归排序
}
public static void quickSort(int a[]) {
sort(a, 0, a.length - 1);
}
public static void main(String[] args) {
int a[] = { 49, 38, 65, 97, 76, 13, 27, 49 };
quickSort(a);
System.out.println(Arrays.toString(a));
}
}
以上便是快速排序的内容了,希望大家都能掌握