排序算法-选择排序 Selection Sort
2016-05-04 16:31
253 查看
代码三天不写手生,是真的哟。
所以要像做日常一样,每天写点最简单的东西。
所以要像做日常一样,每天写点最简单的东西。
版本一
// Selection sort // 选择排序 #include <iostream> using namespace std; void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } void SelectionSort(int a[], int size) { for (int i = 0; i < size; i++) for (int j = i+1; j < size; j++) if (a[j] < a[i]) swap(a[j], a[i]); } void print(int a[], int size) { for (int i = 0; i < size; i++) cout << a[i] << " "; cout << endl; } int main(int argc, char* argv[]) { #if 0 int A[] = { 5,2,4,6,1,3 }; int size = sizeof(A)/sizeof(int); #else // 假设个数未知 int size = 0; cout << "Enter array size: "; cin >> size; cout << "Enter array elements: "; int* A = new int[size]; int i = 0; while ((cin >> A[i]) && (i < size) ) { i++; } #endif SelectionSort(A, size); print(A, size); delete[] A; return 0; }
版本二
#include <iostream> using namespace std; typedef int Item; #define key(A) (A) #define less(A, B) (key(A) < key(B)) #define exch(A, B) {Item t = A; A = B; B = t;} #define compexch(A, B) if(less(B, A)) exch(A, B) void print(int a[], int size) { for (int i = 0; i < size; i++) cout << a[i] << " "; cout << endl; } void selection_sort(Item a[], int size) { for (int i = 0; i < size; i++) { int min = i; for (int j = i+1; j < size; j++) if (less(a[j], a[min])) min = j; exch(a[i], a[min]); } } int main(int argc, char* argv[]) { int A[] = { 8,7,6,5,4,3,2,1 }; int size = sizeof(A)/sizeof(int); selection_sort(A, size); print(A, size); return 0; }
相关文章推荐
- JavaScript演示排序算法
- 算法之排序算法的算法思想和使用场景总结
- PHP版本常用的排序算法汇总
- JavaScript实现多种排序算法
- php 地区分类排序算法
- js三种排序算法分享
- Javascript中的常见排序算法
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
- 排序算法的javascript实现与讲解(99js手记)
- C++中十种内部排序算法的比较分析
- Java实现几种常见排序算法代码
- 浅谈javascript实现八大排序
- C语言演示对归并排序算法的优化实现
- PHP常用的排序和查找算法
- JavaScript中九种常用排序算法
- STl中的排序算法详细解析
- 算法学习入门之使用C语言实现各大基本的排序算法
- PHP四种基本排序算法示例
- 排序算法之PHP版快速排序、冒泡排序
- 几种经典排序算法的JS实现方法