【数据结构】---快速排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40567229/article/details/81155611

 1、快速排序的思想是通过一趟排序将序列分为两个部分,其中一部分的关键字不大于另一部分的关键字,对这两个部分递归进行快速排序,直到整个序列有序。

2、快速排序实现算法:

#include <stdio.h>
#include <stdlib.h>


typedef struct
{
	int data[100];
	int length;
}SqList;

void Out(SqList *L)
{
	int i;
	for (i = 0; i < L->length; i++)
	{
		printf("%d ", L->data[i]);
	}
}
void Insert(SqList *L,int size)
{
	int i;
	L->length = size;
	printf("输入%d个元素", size );
	for (i = 0; i < L->length; i++)
	{
		scanf_s("%d", &L->data[i]);
	}
}

void Quick(SqList *L,int low ,int high)
{
	int i , j , key;
	if (low < high)
	{
		key = L->data[low];//枢轴记录关键字
		i = low;//i,j分别指向序列第一个和最后一个记录
		j = high;
		while (i < j)
		{
			while (L->data[j] >= key && i < j)
				j--;//若后关键字小于枢轴关键字,则将后关键字的位置向前移
			if (i < j)
				L->data[i] = L->data[j];//将比key小的关键字移到前面
			while (L->data[i] <= key && i < j)
				i++;//若前关键字大于枢轴关键字,则将前关键字的位置向后移
			if (i < j)
				L->data[j] = L->data[i];//将比key大的关键字移到后面
		}
		L->data[i] = key;//枢轴关键字移到正确的位置
		Quick(L, low, i - 1);
		Quick(L, i + 1, high);
	}

}

int main()
{
	int size;
	SqList L;
	printf("输入表的长度:");
	scanf_s("%d", &size);
	Insert(&L,size);
	Quick(&L,0,size-1);
	printf("\n快速排序后的元素:");
	Out(&L);
}

3、java快速排序实现:

public static void QuickSort(int a[],int low ,int high){
        int i,j,key;
        i = low;j = high;
        if(low<high) {
            key = a[low];
            while (i < j) {
                while (i < j && a[j] >= key)
                    j--;
                if (i < j)
                    a[i] = a[j];

                while (i < j && a[i] <= key)
                    i++;
                if (i < j)
                    a[j] = a[i];
            }
            a[i] = key;
            QuickSort(a, low, i - 1);
            QuickSort(a, i + 1, high);
        }
    }

    public static void main(String args[]){
        int[] a ={5,1,3,4,2,9};
        QuickSort(a,0,a.length-1);
        for(int num:a)
            System.out.print(num+" ");
    }

猜你喜欢

转载自blog.csdn.net/weixin_40567229/article/details/81155611