面试题答案
一键面试实现思路
- 快速排序的基本思想是通过选择一个基准元素,将数组分为两部分,左边部分的元素小于基准元素,右边部分的元素大于基准元素,然后分别对左右两部分进行递归排序。
- 在对结构体数组排序时,通过指针操作结构体数组元素,以确保数据完整性和效率。
关键代码段
#include <stdio.h>
#include <stdlib.h>
// 定义结构体
struct data {
int id;
double value;
char name[50];
};
// 交换两个结构体变量的函数
void swap(struct data *a, struct data *b) {
struct data temp = *a;
*a = *b;
*b = temp;
}
// 划分函数
int partition(struct data *dataArray, int low, int high) {
int pivot = dataArray[high].id;
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (dataArray[j].id < pivot) {
i++;
swap(&dataArray[i], &dataArray[j]);
}
}
swap(&dataArray[i + 1], &dataArray[high]);
return (i + 1);
}
// 快速排序函数
void quickSort(struct data *dataArray, int low, int high) {
if (low < high) {
int pi = partition(dataArray, low, high);
quickSort(dataArray, low, pi - 1);
quickSort(dataArray, pi + 1, high);
}
}
在主函数中调用 quickSort
函数进行排序:
int main() {
struct data dataArray[10000];
// 假设已经给数组赋值
quickSort(dataArray, 0, 9999);
// 可以在此处添加输出验证排序结果的代码
return 0;
}