// // main.c // cTest // // Created by HuangZizhu on 13-10-8. // Copyright (c) 2013年 HuangZizhu. All rights reserved. // #include <stdio.h> #define N (10) void quickSor(int *nums, int indexStart, int indexEnd); int partition(int *nums, int indexStart, int indexEnd); void exchange(int *nums, int p1, int p2); void printNums(int *nums, int count); int main() { printf(">>>strat\n"); int nums[N] = {0, 4, 2, 5, 1, 3, -1, 19, 99, -100}; printNums(nums, N); int mid = partition(nums, 0, N-1); printNums(nums, N); printf("mid = %d\n", mid); quickSor(nums, 0, N-1); printNums(nums, N); return 0; } void quickSor(int *nums, int indexStart, int indexEnd) { if (indexEnd > indexStart) { int indexMid = partition(nums, indexStart, indexEnd); quickSor(nums, indexStart, indexMid-1); quickSor(nums, indexMid+1, indexEnd); } } int partition(int *nums, int indexStart, int indexEnd) { int p2 = indexStart-1; int p1; int target = nums[indexEnd]; for (p1 = indexStart; p1 < indexEnd; p1++) { if (nums[p1] <= target) { p2++; exchange(nums, p1, p2); } } exchange(nums, p2+1, indexEnd); return p2+1; } void exchange(int *nums, int p1, int p2) { int tmp = nums[p1]; nums[p1] = nums[p2]; nums[p2] = tmp; } void printNums(int *nums, int count) { printf("numbers : "); int i; for (i = 0; i < count; ++i) { printf("%4d\t", nums[i]); } printf("\n"); }
相关推荐
在C语言中实现链表快速排序,首先需要理解链表和快速排序的基本概念。链表不同于数组,它不连续存储数据,而是通过指针连接各个节点。每个节点包含数据元素和指向下一个节点的指针。快速排序的核心是“分区操作”和...
标题:C语言快速排序算法实现 描述:本文将深入探讨如何使用C语言实现快速排序算法,这是一种高效的排序方法,广泛应用于各种数据结构处理场景。快速排序的基本思想是通过一趟排序将待排记录分隔成独立的两部分,...
下面是一个简化的C语言快速排序实现的示例: ```c #include void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } int partition(int arr[], int low, int high) { int pivot = arr[high]; ...
快速排序算法,C语言 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有...
C语言数据结构实现快速排序代码,已经过调试可以直接使用。
这是一个用C语言实现的快速排序的程序,它实现了对一个英文文本中的单词排序并将排序结果输出到另外一个文件中。
快速排序4.c 使用C语言来实现的快速排序4.c 使用C语言来实现的快速排序4.c 使用C语言来实现的快速排序4.c 使用C语言来实现的快速排序4.c 使用C语言来实现的快速排序4.c 使用C语言来实现的快速排序4.c 使用C语言来...
C语言快速排序算法,包含数组和指针的实现方法
本次课程设计的目标是使用C语言编写一个快速排序程序,对一组学生的一门课程考试成绩进行排序,并确保输入和输出的格式符合指定要求。快速排序是一种高效的排序算法,其基本思想是通过选取一个"枢轴"元素,将数组...
数据结构中的快速排序实现,用递归实现的C语言快速排序程序。
本压缩包文件“C语言快速排序.zip”包含了关于如何在C语言中实现快速排序的代码和可能的示例。 快速排序的基本思想是选取一个基准值(pivot),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字...
c语言实现的快速排序算法,及其一步步优化代码(1. 数组长度较小时候选择插入排序;2. 主元在数组最左最右,中间三个数字中间选择中间大小的, 数组拆分后将 重复数字挪到主元附近,不进行重复partition)
void quicksort(int a[], int p, int r) { if(p){ int q = partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); } }
在C语言中实现快速排序,通常包含以下几个步骤: 1. **选择基准值(Pivot Selection)**:选择数组中的一个元素作为基准,常见的方法有选取第一个元素、最后一个元素或中间元素,也可以随机选取。 2. **分区操作...
C语言快速排序算法例程代码,快速排序的基本思想是在待排序的序列中选择一个元素作为中间元素,将序列中小于等于中间元素的元素放到左边,大于中间元素的元素放到右边,然后递归地对左右两个子序列进行排序,直到...
8. **快速排序实现**: - 初始化左右边界:`l=0; h=x-1;` - 选择基准元素:`low=a[i];` - 开始排序: ```c while(l){ if(a[l]>a[h]){ c=a[h]; a[h]=a[l]; a[l]=c; } if(a[l]==low) h=h-1; else l=l+1;...
算法导论版的快速排序的完整实现。C语言版。免积分送给需要的朋友。
在C语言中实现快速排序,通常涉及到以下几个关键知识点: 1. 递归函数:快速排序的核心是递归调用。在快速排序函数中,需要对数组的子区间进行排序,直到子区间的长度为零或一,这时该区间就被认为是已经排序好的。...
本资料包“C语言快速排序(1).zip”包含了使用C语言实现快速排序的代码示例,让我们深入探讨这一经典算法。 快速排序的基本思想是选取一个基准元素,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的...
这里我们将深入探讨在C语言中实现的六种常见排序算法:插入排序、Shell排序、堆排序、冒泡排序、快速排序以及归并排序。 1. **插入排序**:插入排序是一种简单的排序算法,它的工作原理类似于我们日常生活中的整理...