快速排序

xiaoxiao2021-02-28  84

#include <stdio.h> // 交换函数 void swap (int a[], int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } // 打印数组 void printA (int *a, int len) { int i; for (i = 0; i < len; i++) { printf ("M", a[i]); } printf ("\n"); } // 分区操作,返回基准值的下标 int partition(int *a, int left, int right) { int pivot = a[right]; int index = left; // 如果找到一个比基准值小的元素,与下标为index的元素交换 int i; for (i = left; i < right; i++) { if (a[i] < pivot) { swap (a, i, index); index++; } } swap (a, index, right); return index; // 基准值所在位置下标 } void qSort(int *a, int left, int right) { if (left < right) { int pivot = partition(a, left, right); // 进行分区操作,找基准值下标 qSort (a, left, pivot-1); // 对左边部分进行快速排序 qSort (a, pivot+1, right); // 对右边部分进行快速排序 } } int main() { int a[10] = {9,6,8,0,3,1,2,4,7,5}; int len = sizeof(a) / sizeof(a[0]); qSort (a, 0, len-1); printA (a, len); return 0; }

转载请注明原文地址: https://www.6miu.com/read-63625.html

最新回复(0)