目的
前一段时间经历了互联网的面试,发现只要你是从事技术类的,无论是测试、开发、还是算法岗位,都会问问到关于数据结构的东西,而数据结构中最可能被问到的,也是最基础的就是排序算法了。这段时间忙完了毕业论文,也稍微总结了一下各种排序算法,希望能帮助到大家。
各个排序算法实现思路以及代码
选择排序
- 思路
每次选择当前序列的最小值,将其与当前序列的第一个元素交换位置。
- java代码
private static void selectSort(int[] a) {
for (int i = 0; i < a.length-1; i++) {
for (int j = i+1; j < a.length; j++) {
if(a[i]>a[j]){
int temp =a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
def selectedSort(arr):
for i in range(len(arr)):
for j in range(i+1,len(arr)):
if(arr[i]>arr[j]):
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
return arr
冒泡排序
- 思路
冒泡排序(顺序形式),从左向右,两两比较,如果左边元素大于右边,就交换两个元素的位置。其中,每一轮排序,序列中最大的元素浮动到最右面。也就是说,每一轮排序,至少确保有一个元素在正确的位置。这样接下来的循环,就不需要考虑已经排好序的元素了,每次内层循环次数都会减一。其中,如果有一轮循环之后,次序并没有交换,这时我们就可以停止循环,得到我们想要的有序序列了。
- java代码
private static void bubbleSort(int[] a) {
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-i-1; j++) {
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
def bubbleSort(arr):
for i in range(len(arr)):
for j in range(0,len(arr)-i-1):
if(arr[j]>arr[j+1]):
temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
return arr
网友评论