排序算法除了要考虑时间,空间复杂度以外,还需要考虑到稳定性。
稳定的排序算法表示在排序前后,相等的两个值的前后位置保持不变。
选择排序
首先从第一个元素开始扫描整个序列,并将序列的最小元素和第一个元素交换,然后从第二个元素开始扫描,将n-1个元素中的最小序列与第二个元素交换,执行到n-1个元素后,这个序列就排序好了。
/**
* 升序
* 遍历数组找出最小的与第一个交换,第二小的与第二个交换...
* @param originalArr
* @return
*/
@Override
public 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遍后,