排序算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法相关的知识,希望对你有一定的参考价值。
一、冒泡排序
C 语言
void bubble_sort(int arr[], int len) { int i, j, temp; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } }
C++
#include <algorithm>
template<typename T> void bubble_sort(T arr[], int len) { int i, j; for (i = 0; i < len - 1; i++) for (j = 0; j < len - 1 - i; j++) if (arr[j] > arr[j + 1]) std::swap(arr[j], arr[j + 1]); }
二、选择排序
C 语言
void selection_sort(int list[], int length) { int min; for (int i = 0; i < length; ++i) { min = i; for (int j = i + 1; j < length; ++j) { if (list[j] < list[min]) { min = j; } int temp = list[i]; list[i] = list[min]; list[min] = temp; } } }
C++
#include <algorithm>
template<typename T> void selection_sort(std::vector<T>& arr) { for (int i = 0; i < arr.size() - 1; i++) { int min = i; for (int j = i + 1; j < arr.size(); j++) if (arr[j] < arr[min]) min = j; std::swap(arr[i], arr[min]); } }
三、插入排序
C 语言
void insertion_sort(int list[], int length) { int temp; for (int i = 1, j = 0; i < length; ++i) { temp = list[i];for (j = i - 1; j >= 0 and list[j] > temp; j--) { list[j + 1] = list[j]; } list[j + 1] = temp; } }
C++
template <typename BidirectionalIterator>
void insertion_sort(BidirectionalIterator __first, BidirectionalIterator __last) {
if (__first == __last) return;
BidirectionalIterator __it = __first;
while (++__it != __last) {
typename iterator_traits<BidirectionalIterator>::value_type __val = *__it;
BidirectionalIterator __middle = __it, __right = __it;
while (__val < *--__middle) {
*__right-- = *__middle;
if (__middle == __first) break;
}
*__right = __val;
}
}
以上是关于排序算法的主要内容,如果未能解决你的问题,请参考以下文章