面试笔试准备(3)选择算法

来源:互联网 发布:怎样装天正软件 编辑:程序博客网 时间:2024/05/21 09:14

本篇内容为牛客网,左程云算法课程课堂笔记。

(1)课程讲解:选择排序:一开始在整个数组范围上选出最小值:放在位置零上,然后再1到n-1的位置上,选出一个最小值,放在位置1上。按照这样的方法,直到数组结束。

时间复杂度为o(n^2);选择排序每次实现将一个值放到他最终的位置上,从前往后。而冒泡排序是从后往前,把图个元素放到他最终可以放的位置上。

public int[] selectionSort(int[] A, int n) {       for (int i = 0; i < A.length; i++) {       int min=i;;for (int j = i+1; j < A.length; j++) {if (A[min]>A[j]) {min=j;//最小值的那个位置}}if (min!=i) {int tmp=A[min];A[min]=A[i];A[i]=tmp;}}       return A;    }

无论记录的初始排列如何,所需的关键字间的比较次数相同,均为n(n-1)/2,总的时间复杂度为O(n2);
空间复杂度 O(1);

简单选择排序算法不是一个稳定的排序算法:因为,简短选择排序,是从后续序列中,找出最小的那个元素,和他进行交换,那么如果后续序列中有一个和i位置相同的值的元素,又有最小值在这个相同的值的后面,那么i这个位置上的值,就会被交换在与他相同的值的后面去。所以,选择排序不是一种稳定的排序算法。


原创粉丝点击