算法面试必备-----排序算法
算法面试必备-----排序算法
冒泡排序
冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
Python实现(n2)
def bubble_sort(a_list):
for i in range(0,len(a_list)-1):
for j in range(0,len(a_list)-1-i):
if a_list[j] > a_list[j+1]:
a_list[j],a_list[j+1] = a_list[j+1],a_list[j]
return a_list
Java实现(n2)
public class BubbleSort{
public static int[] bubbleSort(int[] a_list){
for(int i = 0;i<a_list.length-1;i++){
for(int j = 0;j<a_list.length-1-i;j++){
if(a_list[j]>a_list[j+1]){
int temp = a_list[j];
a_list[j] = a_list[j+1];
a_list[j+1] = temp;
}
}
}
return a_list;
}
public static void main(String[] args){
int[] arr = {
8,7,6,5,4,3,2,1};
bubbleSort(arr);
for(int x :arr){
System.out.println(x);
}
}
}
选择排序(不稳定)
选择排序的基本思想:比较+交换
在待排序的一组数据中,选出最小(最大)的一个数与第一个位置的数交换,然后在剩下的数中,再找最小(最大)的数与第二个位置的数交换位置,
依次类推,直到第N-1个元素与第N个元素交换位置,选择排序结束。
Python实现(n2)
def select_sort(a_list):
for i in range(len(a_list)-1):
min_index = i
for j in range(i+1,len(a_list)):
if a_list[j] < a_list[min_index]:
min_index = j
a_list[i],a_list[min_index] = a_list[min_index],a_list[i]
return a_list
arr2 = [76,65,24,23,3]
print(select_sort(arr2))
Java实现(n2)
public class SelectSort{
public static int[] selectSort(int[] a_list){
for(int i = 0;i<a_list.length-1