首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

经典快速排序,linux纯C实现。注意swap步骤,并且这个算法还需再敲写15篇

2013-10-25 
经典快速排序,linux纯C实现。注意swap方法,并且这个算法还需再敲写15篇。#include stdio.hvoid swap(int*

经典快速排序,linux纯C实现。注意swap方法,并且这个算法还需再敲写15篇。

#include <stdio.h>void swap(int* a, int* b){*a = *a ^ *b;*b = *a ^ *b;*a = *a ^ *b;}int partition(int* a, int fI, int lI){int i = fI-1, j = 0;for(j=fI;j<=lI;j++){if(*(a+j) < *(a+lI)){i++;if(i != j) swap(a+j, a+i);}}if(i+1 != lI)swap(a+i+1, a+lI);return i+1;}void quickSort(int* a, int fI, int lI){int partI = 0;if(fI >= lI)return;partI = partition(a, fI, lI);quickSort(a, fI, partI-1);quickSort(a, partI+1, lI);}int main(){int a[10] = {241,325425,56765,234,13,34574,4653,5687689,432552,2789};int L = sizeof(a) / sizeof(int);int i = 0;quickSort(a, 0, L-1);for(;i<L;i++)printf("%d ", *(a+i));printf("\n");return 0;}


注意程序中的swap方法是通过指针传递的,所以传递进去的两个指针不能是同一个地址,否则,这个地址中的元素值将变成0,所以本程序中在使用是都判断了是否是同一地址。

热点排行