排序算法c语言描述---选择排序

不念不忘少年蓝@ 2021-11-17 05:36 433阅读 0赞

排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析。

文章规划:

一。通过自己对排序算法本身的理解,对每个方法写个小测试程序。 具体思路分析不展开描述。

二。通过《大话数据结构》一书的截图,详细分析该算法 。

在此,推荐下程杰老师的《大话数据结构》一书,当然不是打广告,只是以一名读者的身份来客观的看待这本书,确实是通俗易懂,值得一看。

②选择排序

一。个人理解

选择排序思路:

首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列的起始位置。以此类推,直到所有元素均排序完毕。

具体做法是:

选择最小的元素与未排序部分的首部交换,使得序列的前面为有序。

通俗的说,就是每次循环找到未排序序列中的最小元素放到起始位置。直至循环n-1次遍历全部的。

选择排序也比较简单易懂,下面直接上代码。

  1. #include<stdio.h>
  2. // 打印结果
  3. void Show(int arr[] , int n)
  4. {
  5. int i;
  6. for ( i=0; i<n; i++ )
  7. printf("%d ", arr[i]);
  8. printf("\n");
  9. }
  10. // 交换数组元素位置
  11. void Swap( int *num_a, int *num_b )
  12. {
  13. int temp = *num_b;
  14. *num_b = *num_a;
  15. *num_a = temp;
  16. }
  17. // 选择排序
  18. void SelectSort( int *arr, int n )
  19. {
  20. int i, j, min_; //min_ 为最小值下标
  21. for ( i=0; i<n-1; i++ ) //控制n-1趟的选择步骤
  22. {
  23. min_ = i; //将当前下标定义为最小值下标
  24. for ( j=i+1; j<n; j++ ) //在arr[i],arr[i+1],...,arr[n-1]中选键值最小的结点
  25. {
  26. if ( arr[min_] > arr[j] )
  27. min_ = j; //如果有小于当前最小值的,把下标赋值给min_
  28. }
  29. if ( i != min_ )
  30. Swap( &arr[i], &arr[min_]); //如果min_不等于初始值,说明找到最小值,交换。
  31. }
  32. }
  33. int main()
  34. { //测试数据
  35. int arr_test[10] = { 8, 4, 2, 3, 5, 1, 6, 9, 0, 7 };
  36. //排序前数组序列
  37. Show( arr_test, 10 );
  38. SelectSort( arr_test, 10 );
  39. //排序后数组序列
  40. Show( arr_test, 10 );
  41. return 0;
  42. }

#

#

二。 《大话数据结构》一书截图分析

注:本文仅为分享知识,绝无商业用途。

如果以该种形式分享知识造成不必要的纠纷,还请第一时间告知。

![Image 1][]

![Image 1][]CenterCenter 1Center 2Center 3Center 4

![Image 1][]

![Image 1][]

[Image 1]:

发表评论

表情:
评论列表 (有 0 条评论,433人围观)

还没有评论,来说两句吧...

相关阅读

    相关 排序算法c语言描述---归并排序

    排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析。 文章规划: 一。通过自己对排序算法本身的理解,对每个方法写

    相关 排序算法c语言描述---冒泡排序

    排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析。 文章规划: 一。通过自己对排序算法本身的理解,对每个方法写

    相关 排序算法c语言描述---桶排序

    十一。桶排序 一。个人理解 桶排序是另外一种以O(n)或者接近O(n)的复杂度排序的算法. 它假设输入的待排序元素是等可能的落在等间隔的值区间内.一个长度为N的数组

    相关 排序算法c语言描述---基数排序

    排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析。 文章规划: 一。通过自己对排序算法本身的理解,对每个方法写