C中写一个快速排序的两种主要方法,最简单的代码,进来看看

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ZhangaZhaoLong/article/details/88579491
  1. #pragma once
    #include <stdio.h>

    int Partion(int *arr, int left, int right)
    {
    	int pivot = arr[right];
    
    	while (left < right)
    	{
    		while (left < right && arr[left] <= pivot)
    		{
    			left++;
    		}
    
    		arr[right] = arr[left];
    		while (left < right && arr[right] >= pivot)
    		{
    			right--;
    		}
    
    		arr[left] = arr[right];
    	}
    
    	arr[left] = pivot;
    	return left;
    }
    
    int partion2(int *arr, int left, int right)
    {
    	int div = left;
    
    	for (int i = left; i < right; i++)
    	{
    		if (arr[i] < arr[right])
    		{
    			int tmp = arr[div];
    			arr[div] = arr[i];
    			arr[i] = tmp;
    			div++;
    		}
    	}
    	int tmp = arr[div];
    	arr[div] = arr[right];
    	arr[right] = tmp;
    
    	return div;
    }
    void Print(int *arr, int size)
    {
    	for (int i = 0; i < size; i++)
    	{
    		printf("%d ", arr[i]);
    	}
    
    	printf("\n");
    }
    
    void QuickSort(int *arr, int left, int right)
    {
    	if (left >= right)
    	{
    		return;
    	}
    
    	int div = Partion_1(arr, left, right);
    	
    	QuickSort(arr, left, div - 1);
    	QuickSort(arr, div + 1, right);
    }
    
  2. #include “test.h”

    int main()
    {
    	int arr[] = { 1, 3, 5, 2, 8, 1, 0, 33, 55, 22, 344, 13, 5, 6, 243, 151, 388 };
    	int sz = sizeof(arr) / sizeof(arr[0]);
    
    	QuickSort(arr, 0, sz - 1);
    	Print(arr, sz);
    
    	system("pause");
    	return 0;
    }
    

猜你喜欢

转载自blog.csdn.net/ZhangaZhaoLong/article/details/88579491