快速排序

xiaoxiao2025-04-24  9

#include<stdio.h> #define MAX 100 int m=0; int parition(int *a,int i,int j) { int temp; temp=a[i]; while(i<j) { while(i<j&&a[j]>=temp) //从右向左查找比关键字小的数 j--; if(i<j) a[i++]=a[j]; while(i<j&&a[i]<=temp) //从左向右查找比关键字大的数 i++; if(i<j) a[j--]=a[i]; } a[i]=temp; return i; } void QuickSort(int a[],int low,int high) { int position; if(low>=high) return; else{ m++; position = parition(a,low,high); QuickSort(a,low,position-1); QuickSort(a,position+1,high); } } void InputData(int *a,int *num) { int d; printf("请输入数据以-9999结束:\n"); do{ scanf("%d",&d); if(d==-9999) break; a[(*num)++]=d; }while(1); } void OutputData(int *a,int num) { int i; for(i=0;i<num;i++) { printf("%3d",a[i]); } printf("\n"); printf("排序趟数:%d",m); printf("\n"); } void main() { int a[MAX],num=0; InputData(a,&num); QuickSort(a,0,num-1); OutputData(a,num); }
转载请注明原文地址: https://www.6miu.com/read-5029022.html

最新回复(0)