void insertSort(int data[], int n) {
int i, j, tmp;
for (i = 1; i < n; i++) {
tmp = data[i];
for (j = i - 1; j >= 0 && tmp < data[j]; j--) {
data[j + 1] = data[j];
}
data[j + 1] = tmp;
}
}
冒泡排序
void bubbleSort(int data[], int n) {
int i, j, tmp;
for (i = 1; i < n; i++) {
for (j = 0; j < n - i; j++) {
if (data[j] > data[j + 1]) {
tmp = data[j + 1];
data[j + 1] = data[j];
data[j] = tmp;
}
}
}
}
选择排序
void selectSort(int data[], int n) {
int i, j, k, tmp;
for (i = 0; i < n - 1; i++) {
k = i;
for (j = i + 1; j < n; j++) {
if (data[j] < data[k]) {
k = j;
}
}
if (k != i) {
tmp = data[i];
data[i] = data[k];
data[k] = tmp;
}
}
}
希尔排序
void shellSort(int data[], int n) {
int i, j, k, tmp;
for (k = n / 2; k > 1; k = k / 2) {
for (i = k; i < n; i += k) {
tmp = data[k];
for (j = i - k; j >= 0 && tmp < data[j]; j -= k) {
data[j + k] = data[j];
}
data[j + k] = tmp;
}
}
}
快速排序
int partition(int data[], int low, int high) {
int i, j, pivot;
i = low;
j = high;
pivot = data[low];
while (i < j) {
while (i < j && data[j] >= pivot) {
j--;
}
data[i] = data[j];
while (i < j && data[i] <= pivot) {
i++;
}
data[j] = data[i];
}
data[i] = pivot;
return i;
}
void quickSort(int data[], int low, int high) {
if (low < high) {
int loc = partition(data, low, high);
quickSort(data, low, loc - 1);
quickSort(data, loc + 1, high);
}
}