选择排序及其优化
2018-03-26 15:42
239 查看
普通选择排序
选择排序的优化
#include<stdio.h> #include<assert.h> void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } void SelectSort(int *arr, int size) { int i = 0; int j = 0; int max = 0; for (i = 0; i < size - 1 ; i++) { max = i; for (j = i; j < size ; j++) //j从i的地方开始 { if (arr[max] < arr[j]) { max = j; } } if (max != i) // SSwap(&arr[i], &arr[max]); } } void SPrint(int *arr, int size) { int i = 0; for (; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } void SelectSortTest() { int arr[] = { 5, 1, 2, 3, 6, 7, 8, 9, 0 }; int size = sizeof(arr) / sizeof(arr[0]); SPrint(arr, size); SelectSort2(arr, size); SPrint(arr, size); }
选择排序的优化
void SelectSort2(int *arr, int n) { assert(arr); int left = 0; int right = n - 1; while (left < right) { int min = left; int max = right; for (int i = left; i <= right; i++) { if (arr[i] < arr[min]) min = i; if (arr[i] > arr[max]) max = i; } swap(&arr[max], &arr[right]); if (min == right) { min = max; }//注释见下图 swap(&arr[min], &arr[left]); left++; right--; } }
相关文章推荐
- 选择排序及其优化方案
- java版排序算法简介及冒泡排序以及优化,选择排序,直接插入排序,希尔排序,堆排序,快速排序及其优化前言 2 分类 2 稳定性 3 时间复杂度 4 Java实现版本 5 1、冒泡排序 6 2、选择排序
- 排序(2)——选择排序及其优化
- 十二.C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- java冒泡排序、选择排序、插入排序算法的核心思想及其比较
- 百万数据排序:优化的选择排序(堆排序)
- 排序(2)——插入/希尔/选择/快速排序及优化
- 选择排序及其JAVA实现
- 优化的选择排序——SelectionSortSecond
- 插入排序及其优化方案
- 排序(6)——快速排序及其优化
- 2-1.插入排序及其优化
- 经典排序之快排及其优化
- 算法学习--插入排序及其优化
- 插入排序及其优化
- 层层优化的选择排序
- 冒泡、插入、选择排序及其改进
- C语言:两种简单的排序及其应用(选择排序和冒泡排序)
- c语言的简单排序:选择排序和冒泡排序及他们的优化
- 插入排序,选择,冒泡,快速排序算法及优化