标签:思想 -- 去除 实现 组元 指定元素 大于 相对 交换
排序的思想有很多种,其中最基础的三种排序即,选择排序,插入排序,冒泡排序,下面通过数组中的元素排序代码来实现三种排序思想。
使用到双指针思想,一个游历指针(用于遍历数组中所有元素,选择
出指定元素),一个标记指针(用于标记有序数组的末尾),使用到这种思想还可用于数组去重
,数组去除指定元素
等解题手段。
for i:=0;i<len(arr)-1;i++{
min := i
for j:=i+1;j<len(arr);j++{
if arr[i]>arr[j] {
min = j
}
}
if i!=min {
arr[i],arr[min] = arr[min],arr[i]
}
}
长度个数
,即让整个数组有序)for i:=0;i<len(arr);i++{
for j:=0;j<len(arr)-1;j++{
if arr[j]>arr[j+1] {
arr[j],arr[j+1] = arr[j+1],arr[j]
}
}
}
for i:=0;i<len(arr)-1;i++{ //只剩一个,不需要冒泡
for j:=0;j<len(arr)-1-i;j++{ //已冒泡元素相对有序,无需冒泡
if arr[j]>arr[j+1] {
arr[j],arr[j+1] = arr[j+1],arr[j]
}
}
}
for i:=0;i<len(arr)-1;i++{ //只剩一个,不需要冒泡
isneedexchange := false
for j:=0;j<len(arr)-1-i;j++{ //已冒泡元素相对有序,无需冒泡
if arr[j]>arr[j+1] {
arr[j],arr[j+1] = arr[j+1],arr[j]
isneedexchange = true
}
}
if !isneedexchange {
break
}
}
遍历数组中每个元素,假定该元素前面的元素有序,尝试插入到合适的位置(往前遍历,寻找一个大于自己的元素,若不大于自己则往后挪,直到最后跳出循环时指向的下标小于自己,那么就将该元素插入到该下标后面的元素)
for i:=1;i<len(arr);i++{
tmp := arr[i]
for j:=i;j>0&&arr[j-1]>tmp;j--{
arr[j] = arr[j-1]
}
arr[j] = tmp
}
for i:=1;i<len(arr);i++{
tmp := arr[i]
for j:=i-1;j>=0&&arr[j]>tmp;j--{
arr[j+1] = arr[j]
}
arr[j+1] = tmp
}
标签:思想 -- 去除 实现 组元 指定元素 大于 相对 交换
原文地址:https://www.cnblogs.com/longui/p/12303476.html