C语言-数据结构-选择排序-源代码

待我称王封你为后i 2022-07-13 14:29 259阅读 0赞

1. 基本思想及时间复杂度

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

选择排序时间复杂度为O(n^2).

2. 源代码

  1. #include<stdio.h>
  2. void selectsort(int a[], int n)
  3. {
  4. int i, j, min, temp, c1=0, c2=0;
  5. for(i=0;i<n;i++)
  6. {
  7. min=i;
  8. for(j=i+1;j<n;j++)//寻找最小的值
  9. {
  10. c1++;
  11. if(a[j]<a[min])
  12. {
  13. min=j;
  14. }
  15. }
  16. if(min!=i)//如果最小的值不是i,则交换
  17. {
  18. temp=a[i];
  19. a[i]=a[min];
  20. a[min]=temp;
  21. c2++;
  22. }
  23. }
  24. printf("总计数据交换%d次, 访问数组%d次\n\n", c2, c1);
  25. }
  26. int main(void)
  27. {
  28. int i;
  29. int a[10]={5,2,6,0,3,9,1,7,4,8};
  30. printf("排序前:");
  31. for(i=0;i<10;i++)
  32. {
  33. printf("%d",a[i]);
  34. }
  35. printf("\n\n\n");
  36. selectsort(a, 10);
  37. printf("排序后:");
  38. for(i=0;i<10;i++)
  39. {
  40. printf("%d",a[i]);
  41. }
  42. printf("\n\n\n");
  43. return 0;
  44. }

运行结果如下图:

Center

发表评论

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

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

相关阅读