分享

排序算法

 水中麒麟 2013-09-28
#include <iostream>
using namespace std;
// 冒泡排序
void bubbleSort (int data[], size_t size) {
for (size_t i = 0; i < size - 1; i++) {
bool ordered = true;
for (size_t j = 0; j < size - 1 - i; j++)
if (data[j+1] < data[j]) {
int temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
ordered = false;
}
if (ordered)
break;
}
}
// 插入排序
void insertSort (int data[], size_t size) {
for (size_t i = 1; i < size; i++) {
int temp = data[i];
size_t j;
for (j = i; j > 0 && temp < data[j-1]; j--)
data[j] = data[j-1];
if (j != i)
data[j] = temp;
}
}
// 选择排序
void selectSort (int data[], size_t size) {
for (size_t i = 0; i < size - 1; i++) {
size_t min = i;
for (size_t j = i + 1; j < size; j++)
if (data[j] < data[min])
min = j;
if (min != i) {
int temp = data[i];
data[i] = data[min];
data[min] = temp;
}
}
}
// 快速排序
void quickSort (int data[], size_t l, size_t r) {
size_t p = (l + r) / 2;
int pivot = data[p];
for (size_t i = l, j = r; i < j;) {
while (! (i >= p || pivot < data[i]))
i++;
if (i < p) {
data[p] = data[i];
p = i;
}
while (! (j <= p || data[j] < pivot))
j--;
if (j > p) {
data[p] = data[j];
p = j;
}
}
data[p] = pivot;
if (p - l > 1)
quickSort (data, l, p - 1);
if (r - p > 1)
quickSort (data, p + 1, r);
}
int main (void) {
int data[] = {13,23,20,12,15,31,19,26,24,37};
size_t size = sizeof (data) / sizeof (data[0]);
// bubbleSort (data, size);
// insertSort (data, size);
// selectSort (data, size);
quickSort (data, 0, size - 1);
for (size_t i = 0; i < size; i++)
cout << data[i] << ' ';
cout << endl;
return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多