2019-11-16 · 数组中涉及到的常见算法(下)

最后一点点:

2019-11-16 · 数组中涉及到的常见算法(下)_第1张图片
常见的算法



冒泡排序:

介绍:
冒泡排序的原理不难,它重复的走访要排序的数列,以次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。

排序思想:
①比较相邻的两个元素。如果第一个元素比第二个元素大,就交换位置。
②对每一对元素进行这样的操作,从开始的第一对到最后一对,这样到操作完后,最后的那个元素将会是最大的数。
③持续对数组的元素进行这样对比的操作,直到没有对数可以比较为止。

/*
 * 冒泡排序
 *  排序思想:
 *  1. 比较相邻的两个元素。如果第一个元素比第二个元素大,就交换位置。
 *  2. 对每一对元素进行这样的操作,从开始的第一对到最后一对,
 *       这样到操作完后,最后的那个元素将会是最大的数。
 *  3.持续对数组的元素进行这样对比的操作,直到没有对数可以比较为止。
 * 
 */
public class Test1 {
    public static void main(String[] args) {
        
        int[] arr = new int[] {
                65,98,34,16,0,-5,-6,45,39,-44,-99,35,34};
        
        //冒泡排序
        //外层控制排序的对比的次数,比数组长度少一是因为最后一个数据不用比较。
        for(int i=0; i arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        
        for(int i=0; i



快速排序:

介绍:
快速排序通常明显比同为O(nlogn)的其他算法更快,因此常被采用,而且快排采用了分治法的思想,所以在很多笔试面试中能经常看到快排的影子。可见掌握快排的重要性。

排序思想:
①从数列中挑出一个元素,称为"基准"(pivot),
②重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
③递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
④递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。

2019-11-16 · 数组中涉及到的常见算法(下)_第2张图片
快速排序



排序算法性能对比:

2019-11-16 · 数组中涉及到的常见算法(下)_第3张图片
排序算法性能对比

你可能感兴趣的:(2019-11-16 · 数组中涉及到的常见算法(下))