| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1178 人关注过本帖
标题:各种排序(添加中,大家可以把自己写的贴在这里)
只看楼主 加入收藏
取消关键字高亮
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
结帖率:50%
收藏
 问题点数:0 回复次数:8 
各种排序(添加中,大家可以把自己写的贴在这里)

//Sort.h
#include <stdlib.h>
#include<stdio.h>
#include<time.h>
#define MAXSIZE 2000
typedef struct list{
int data[MAXSIZE];
int length;
};


void Print_List(list a)
{
printf("输出顺序表中%d个排序码:\n",a.length);
for(int i=0;i<a.length;i++)
{
printf("%-5d",a.data[i]);
if((i+1)%10==0)
{
printf("\n");
}
}
printf("\n");
}

搜索更多相关主题的帖子: include 
2007-06-30 22:26
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

//测试主函数
#include"Sort.h"
//#include"Quick_Sort.cpp"

int main()
{
int n;
list a;
srand(time(NULL));
printf("输入待排序的个数:");
scanf("%d",&n);
a.length=n;
for(int i = 0 ;i<n;i++)
{
a.data[i]=rand()%100;
}
Print_List(a);
Quick_Sort(a,0,n);
Print_List(a);
return 0;
}


倚天照海花无数,流水高山心自知。
2007-06-30 22:27
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
/*********************************************************/
/* 直接选择排序 */
/*********************************************************/
void Simple_Sort(list &a)
{
int i,j,max,k;
for(i=0;i<a.length;i++)
{
k=i;
max=a.data[i];
for(j=i+1;j<a.length;j++)
{
if(a.data[j]>max)
{
k=j;
max=a.data[j];
}
}
a.data[k]=a.data[i];
a.data[i]=max;
}
}

倚天照海花无数,流水高山心自知。
2007-06-30 22:28
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
/**************************************************/
/* 直接插入排序 */
/**************************************************/
void Insert_Sort(list &a)
{
int i,j;
for(i=1;i<a.length;i++) //将第i个数插入到前面中去。
{
int temp=a.data[i];
j=i-1;
while(j>=0&&temp<a.data[j])
{
a.data[j+1]=a.data[j];
j--;
}
a.data[j+1]=temp;
}
}

倚天照海花无数,流水高山心自知。
2007-06-30 22:28
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
/********************************************************/
/* 冒泡排序 */
/********************************************************/
void Bubble_Sort(list &a)
{
int i , j;
for(i=0;i<a.length;i++)
{
for(j=0;j<a.length-i-1;j++)
{
if(a.data[j+1]>a.data[j])
{
int temp;
temp=a.data[j];
a.data[j]=a.data[j+1];
a.data[j+1]=temp;
}
}
}
}

倚天照海花无数,流水高山心自知。
2007-06-30 22:28
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
/*****************************************************/
/* shell 排序 */
/*****************************************************/
void Shell_Sort(list &a)
{
int i,j;
int d=a.length/2; //分组
while(d>=1)
{
for(i=d;i<a.length;i++) //从第i个元素开始,将所有元素有序插入到相应分组
{
int temp=a.data[i];//保存第i个元素
j=i-d; //向前找插入位置
while(j>=0&&a.data[j]<temp)
{
a.data[j+d]=a.data[j]; //组内移动
j-=d;
}
a.data[j+d]=temp;
}
d/=2; //减小分组数
}
}

倚天照海花无数,流水高山心自知。
2007-06-30 22:28
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
/********************************************************/
/* 快速排序 */
/********************************************************/
void Quick_Sort(list &a,int left,int right)
{
int i ,j;
if(left<right)
{
i=left;j=right;
int temp=a.data[i];
while(i!=j)
{
while(i<j&&temp>a.data[j])
{
j--;
}
if(i<j)
{
a.data[i]=a.data[j];
i++;
}
while(i<j&&temp<a.data[i])
{
i++;
}
if(i<j)
{
a.data[j]=a.data[i];
j--;
}
}
a.data[i]=temp;
Quick_Sort(a,left,i-1);
Quick_Sort(a,i+1,right);
}
}

倚天照海花无数,流水高山心自知。
2007-06-30 22:29
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
/**************************************************/
/* 二分法插入排序 */
/**************************************************/
void Binsert_Sort(list &a)
{
int i,j;
for(i=1;i<a.length;i++)
{
int temp=a.data[i];
int left=0,right=i-1;
while(left<=right)
{
int mid=(left+right)/2;
if(a.data[mid]>a.data[i])
{
left=mid+1;
}
else
{
right=mid-1;
}
}
for(j=i-1;j>=left;j--)
{
a.data[j+1]=a.data[j];
}
a.data[align=left]=temp;
}
}

倚天照海花无数,流水高山心自知。
2007-06-30 22:29
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
//DistributionCounting 分布计数
main()
{
    int a[7]={13,11,12,13,12,12,18};
    int d[8],s[7];
    int i,j;
    for(j=0;j<=7;j++)
        d[j]=0;
    for(i=0;i<7;i++)
        d[a[i]-11]++;
    for(j=1;j<=7;j++)
        d[j]=d[j-1]+d[j];
    for(i=6;i>=0;i--)
    {
        j=a[i]-11;
        s[d[j]-1]=a[i];
        d[j]=d[j]-1;
    }
    for(i=0;i<7;i++)
        printf("%d ",s[i]);
}

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-11-05 09:36
快速回复:各种排序(添加中,大家可以把自己写的贴在这里)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019685 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved