快速排序,快速选择排序,选择排序的区别


选择排序是对整体序列进行排序

快速排序也是对整体序列进行排序
 

 

快速选择算法是快速在未排序的数组中寻找第k小/大的元素

快速选择算法和快速排序的思想是找基准点 , 在基准点左边的都比他小,然后在基准点右边的都比大这样
但是这两个算法的目的不同
所以实现起来会有不同  快速选择算法只要选择一侧进行迭代就好了 快速排序要两侧都迭代

 

选择排序:保持最小元素在最左侧,用最左侧的元素依次和右边的元素比较,谁小谁放在左边。
步骤:
1.在未排序序列中找到最小元素,存放到排序序列的起始位置。
2.再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。
3.以此类推,直到所有元素均排序完毕。
'''
class Solution(object):
    def selectSort(self,a):
        for i in range(len(a)): #一次for循环,直接从i+1计算,就不算i前面已经排好序的数值
            for j in range(i + 1, len(a)): #一次for循环确定一个最小值.通过让i对应的值和i之后的每个值进行比较,让a[i]处于最小值
                if a[i] > a[j]: #保持a[i]最小 
                    a[i],a[j] = a[j], a[i]
        return a 
 
my_solution = Solution()
a = [9,3,8,5]
b = my_solution.selectSort(a)
print("sequence is:", b)

--------------------- 
作者:湾区Python 
来源:CSDN 
原文:https://blog.csdn.net/BTUJACK/article/details/80548249 
版权声明:本文为博主原创文章,转载请附上博文链接!

快速排序和归并排序的区别,Python代码实现

https://blog.csdn.net/BTUJACK/article/details/84196476

 

认识你是我们的缘分,同学,等等,学习人工智能,记得关注我。

 

微信扫一扫
关注该公众号

《湾区人工智能》

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来为您介绍一下 C 语言中的快速排序和直接选择排序快速排序是一种常用的排序算法,其基本思想是采用分治策略,将待排序序列分成两个子序列,其中一个子序列的所有元素都小于另一个子序列的所有元素,然后再对这两个子序列分别进行快速排序,以此类推,直到整个序列有序为止。快速排序的时间复杂度为 O(nlogn),是一种比较高效的排序算法。 以下是 C 语言中实现快速排序的代码: ```c void quick_sort(int arr[], int left, int right) { if (left < right) { int i = left, j = right, x = arr[left]; while (i < j) { while (i < j && arr[j] >= x) j--; if (i < j) arr[i++] = arr[j]; while (i < j && arr[i] < x) i++; if (i < j) arr[j--] = arr[i]; } arr[i] = x; quick_sort(arr, left, i - 1); quick_sort(arr, i + 1, right); } } ``` 直接选择排序是一种简单的排序算法,其基本思想是每次找到最小的元素并将其放到序列的起始位置,然后再在剩余的元素中找到最小的元素并将其放到已排序部分的末尾,以此类推,直到整个序列有序为止。直接选择排序的时间复杂度为 O(n^2),是一种比较低效的排序算法。 以下是 C 语言中实现直接选择排序的代码: ```c void select_sort(int arr[], int len) { int i, j, min, temp; for (i = 0; i < len - 1; i++) { min = i; for (j = i + 1; j < len; j++) { if (arr[j] < arr[min]) min = j; } if (min != i) { temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } } ``` 希望这些代码能够帮助您了解快速排序和直接选择排序的基本思想和实现方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值