1. 顺序表相关
1.1 快速排序
#include <stdio.h>
int Partition(int arr[],int low,int hight) {
int pivot = arr[low];
while (low < hight) {
while (low < hight && arr[hight] >= pivot) {
hight--;
}
arr[low] = arr[hight];
while (low < hight && arr[low] <= pivot) {
low++;
}
arr[hight] = arr[low];
}
arr[low] = pivot;
return low;
}
void Qsort(int arr[], int low, int hight) {
if (low < hight) {
int mid = Partition(arr, low, hight);
Qsort(arr, low, mid - 1);
Qsort(arr, mid + 1, hight);
}
}
void printArr(int arr[],int arrLength) {
for (int i = 0; i < arrLength; i++){
printf("%4d",arr[i]);
}
printf("\n");
}
int main() {
int arr[10] = {7,2,6,3,4,6,9,0,-1,100};
printf("排序前:");
printArr(arr, 10);
printf("排序后:");
Qsort(arr,0,9);
printArr(arr, 10);
return 0;
}
1.2 二分查找
#include <stdio.h>
int BinarySearch(int arr[],int key,int length) {
int low = 0,hight = length-1,mid;
while (low <= hight) {
mid = (low+hight)/2;
if (arr[mid] == key) {
return mid;
}else if (arr[mid] < key) {
low = mid + 1;
}else{
hight = mid - 1;
}
}
return -1;
}
void main() {
int arr[5] = {4,6,8,9,12};
printf("%d", BinarySearch(arr,7,5));
}