首页 > 代码库 > C实现9种排序算法
C实现9种排序算法
#include <stdio.h>
#include <stdlib.h>
#define LENGTH(s) (sizeof(s)/sizeof(int))
#define SWAP(x,y) {long t; t=x; x=y; y=t;}
//冒泡排序
void
BubbleSort(
int
**p,
int
len){
int
i,j;
for
(i=0;i<len;i++){
//外层控制循环次数
for
(j=0;j<len-i;j++){
//控制交换次数
if
((*p)[j]>(*p)[j+1]){
SWAP((*p)[j],(*p)[j+1]);
}
}
}
}
//选择排序
void
SelectSort(
int
**p,
int
len){
int
i,j,k;
for
(i=0;i<len;i++){
k=i;
for
(j=i+1;j<len;j++){
if
((*p)[k]>(*p)[j]){
k=j;
}
}
if
(k!=i){
SWAP((*p)[k],(*p)[i]);
}
}
}
//插入排序
void
InsertSort(
int
**p,
int
len){
int
i,j,k;
for
(i=1;i<len;i++){
k=(*p)[i];
for
(j=i-1;j>=0;j--){
if
((*p)[j]>k){
(*p)[j+1]=(*p)[j];
}
else
{
break
;
}
}
(*p)[j+1]=k;
}
}
//快速排序
void
QuickSort(
int
**p,
int
min,
int
max){
int
i,j,k;
if
(min<max){
i=min;j=max;k=(*p)[i];
while
(i<j){
while
(i<j && (*p)[j]>k)
j--;
if
(i<j)
(*p)[i++]=(*p)[j];
while
(i<j && (*p)[i]<k)
i++;
if
(i<j)
(*p)[j--]=(*p)[i];
}
(*p)[i]=k;
QuickSort(p,min,i-1);
QuickSort(p,i+1,max);
}
}
void
main(){
int
arr[]={1233,22,38,99,90,1,23,45,394,2,384,45,100,-10,22};
int
i,*p=arr;
int
len=LENGTH(arr);
//BubbleSort(&p,len);
//SelectSort(&p,len);
//InsertSort(&p,len);
QuickSort(&p,0,len);
for
(i=0;i<len;i++){
printf
(
"%d\n"
,arr[i]);
}
}
C实现9种排序算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。