蛮力法中的一些排序算法

来源:互联网 发布:唱谱软件安卓版 编辑:程序博客网 时间:2024/06/08 10:25

排序算法除了要考虑时间,空间复杂度以外,还需要考虑到稳定性。

稳定的排序算法表示在排序前后,相等的两个值的前后位置保持不变。

选择排序

首先从第一个元素开始扫描整个序列,并将序列的最小元素和第一个元素交换,然后从第二个元素开始扫描,将n-1个元素中的最小序列与第二个元素交换,执行到n-1个元素后,这个序列就排序好了。

/** * 升序 * 遍历数组找出最小的与第一个交换,第二小的与第二个交换... * @param originalArr * @return */@Overridepublic int[] asc(int[] originalArr){for(int i = 0; i < originalArr.length; i++){int min = i;for(int j = i+1; j < originalArr.length; j++){if(originalArr[min] > originalArr[j]){min = j;}}int tmp = originalArr[min];originalArr[min] = originalArr[i];originalArr[i] = tmp;}return originalArr;}


冒泡排序

比较相邻的两个元素,如果第一个元素大于第二个元素就交换位置,第一遍最大值将会交换到最后一个位置,第二次循环将n-1个元素中的最大值交换到最后第二个位置,重复操作n-1遍后,这个序列就排序好了。

/** * 升序 * 比较相邻元素,将大元素沉下去 */@Overridepublic int[] asc(int[] originalArray) {for(int i = 0; i < originalArray.length; i++){for(int j = i + 1; j < originalArray.length; j++){if(originalArray[i] > originalArray[j]){int temp = originalArray[i];originalArray[i] = originalArray[j];originalArray[j] = temp;}}}return originalArray;}


0 0
原创粉丝点击