C/C++程序员:基本排序算法之选择排序
2014-04-29 09:50
288 查看
选择排序
10 30 50 40 30
^
1)算法
A.在整个序列中寻找最小元素,与首元素交换;
B.在剩余序列中寻找最小元素,与次元素交换;
C.以此类推,直到剩余序列中仅包含一个元素。
2)评价
A.平均时间复杂度:O(N^2)
B.非稳定排序。
C.对数据的有序性不敏感。
D.交换的次数少,优于冒泡排序。
10 30 50 40 30
^
1)算法
A.在整个序列中寻找最小元素,与首元素交换;
B.在剩余序列中寻找最小元素,与次元素交换;
C.以此类推,直到剩余序列中仅包含一个元素。
2)评价
A.平均时间复杂度:O(N^2)
B.非稳定排序。
C.对数据的有序性不敏感。
D.交换的次数少,优于冒泡排序。
#include <stdio.h> #include <stdlib.h> /* 选择排序 */ void select_sort (int data[], size_t size) { size_t i; for (i = 0; i < size - 1; ++i) { size_t min = i, j; for (j = i + 1; j < size; ++j) if (data[j] < data[min]) min = j; if (min != i) { int swap = data[i]; data[i] = data[min]; data[min] = swap; } } } /* 测试用例 */ int main (void) { srand (time (NULL)); int data[10]; size_t i, size = sizeof(data) / sizeof(data[0]); for (i = 0; i < size; ++i) printf ("%2d ", data[i] = rand () % 100); printf ("\n"); select_sort (data, size); for (i = 0; i < size; ++i) printf ("%2d ", data[i]); printf ("\n"); return 0; }
相关文章推荐
- C/C++程序员基础:Linux C高级编程基本知识点
- c-c++程序员应知道的几个基本问题
- 程序员面试精要-C/C++程序设计-程序设计基本概念(面试宝典读书笔记)
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- C/C++程序员:模版和容器的基本应用
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 吐槽一篇...有关C++程序员的基本素质
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 考查C++/C程序员的基本编程技能面试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- C/C++程序员:基本排序算法之快速排序
- 考查C++/C程序员的基本编程技能面试题
- C/C++程序员:基本排序算法之插入排序
- 考查C++/C程序员的基本编程技能面试题
- 考查C++/C程序员的基本编程技能面试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题