实验八 c排序算法

8.1

#include<stdio.h>

int main()
{
int a[5],i,j,k,t,z;

//输入5个元素进入数组
for(i=0;i<5;i++)
scanf("%d",&a[i]);

//冒泡排序算法
for(j=0;j<5;j++)
for(k=j;k<5;k++)
{
if(a[j]<a[k])
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}

for(i=0;i<5;i++)
printf("%d ",a[i]);

printf("\n");
return 0;
}

8.2

#include<stdio.h>
#include<string.h>

int main()
{
char a[40],t;
int i,j,k;

gets(a); //输入字符串
i=strlen(a); //获取字符串长度,方便进行排序

//冒泡排序算法
for(j=0;j<i;j++)
for(k=j;k<i;k++)
{
if(a[j]>a[k])
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}

puts(a); //输出字符串

printf("\n");

return 0;
}

8.3

#include<stdio.h>
#include<string.h>

int main()
{
char a[5][20],b[40]; //舍友为四个,第五个内存作为交换中介
int i,j,k;

for(i=0;i<4;i++)
gets(a[i]);

//冒泡排序算法
for(j=0;j<4;j++)
for(k=j;k<4;k++)
{
if(strcmp(a[j],a[k])>0)
{
strcpy(a[4],a[j]);
strcpy(a[j],a[k]);
strcpy(a[k],a[4]);
}
}

for(i=0;i<4;i++)
puts(a[i]);

return 0;
}

时间: 2024-11-10 00:36:17

实验八 c排序算法的相关文章

八种排序算法

最近一段时间自己在研究各种排序算法,于是自己写了一个八种排序算法的集合: /************************************************************************* > Copyright (c)2014 stay hungry,stay foolish !!! > File Name: sort.cpp > Author: kanty > Mail: [email protected] > Created Time:

八种排序算法(内部排序)

八种排序算法很长时间没有使用了,今天做一个总结,方便以后自己用的时候参考. 这八种排序算法都是内部算法,这八种排序算法分别是: 1. 插入排序 1)直接插入排序 2)希尔排序 2.选择排序 1)简单选择排序 2)堆排序 3.交换排序 1)冒泡排序 2)快速排序 4.归并排序 5.基数排序 一.直接插入排序 将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数增1的有序表.在实际操作中,先将序列的第一个记录看成是一个有序的子序列,然后从第二个.第三个.……记录逐个进行插入,直至整个序列有

八种排序算法效率比较

从刚上大一那会儿学的C语言开始,就已经接触到了不少排序算法,但当时都只是为了完成简单的排序任务而已,而且所给的数据也不够多,所以看不出各个排序算法间的执行效率的优劣.最近有个数据结构课程设计的实验,是有关于排序算法之间的效率比较,我就顺便把它放上来了,并对各个算法执行的效率时间做了柱形统计图表.此次实验主要测试了8种排序算法:插入排序.快速排序.冒泡排序.希尔排序.简单选择排序.堆排序.归并排序.折半插入排序. 总共建立了三种情况,分别是平均排序.最好情况排序.最坏情况排序.第一种情况就是使用了

java的八种排序算法---冒泡排序

冒泡排序是一种简单的排序算法,它重复的走访要排序的数列,两两比较相邻的元素,如果左边的大于右边就把他们交换过来,以此类推重复的排序,直到没有要排序的数列为止,这个算法的由来是因为越小的数列随着排序会慢慢的浮到数列顶端. /** * 冒泡排序 * 比较相邻的元素.如果第一个比第二个大,就交换他们两个. * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. * 针对所有的元素重复以上的步骤,除了最后一个. * 持续每次对越来越少的元素重复上面的步骤,

java八种排序算法---快速排序

快速排序基本思想:挖坑填数+递归分治 快速排序使用分治法的策略,把一个串行分成2个子串行,快速排序又是一种分而治之的思想在排序算法是上的典型应用,本质上看,快速排序应该算冒泡排序基础上的递归分治法,快速排序名字简单粗暴,顾名思义就是快而且效率高,它是处理大数据最快的算法之一了. 算法描述:1.从数列中任意挑出一个数作为基准(pivot) 2.重新排序,所有比基准大的数放在基准左边,所有比基准大的数放在基准右边,这样排序一遍后该基准就位于数列的中间,这个就被称为分区操作(partition) 3.

八种排序算法--java实现(转:http://blog.csdn.net/without0815/article/details/7697916)

8种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的.如此反复循环,直到全部排好顺序. (2)实例 (3)用java实现 1 package com.njue; 2 3 public class insertSort { 4 public insertSort(){ 5 inta[]={49,38,65,97,76,13,27,49,78,34,12,

一遍记住Java常用的八种排序算法与代码实现

1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数--直到最后一个数,重复第二步. 如何写写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用插入. 设定插入数和得到已经排好序列的最后一个数的位数.insertNum和j=i-1. 从最后一个数开始向前循环,如果插入数小于当前数,就将当前数向后移动

Java常用的八种排序算法与代码实现

1.直接插入排序 2.希尔排序 3.简单选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 8.基数排序 1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数--直到最后一个数,重复第二步. 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用插入. 设定插入数和得到已经排好序列的最

排序算法(四)——归并排序、基数排序

前面三篇文章分别介绍了插入排序.选择排序和交换排序,今天将最后两个排序讲完,分别是归并排序和基数排序. ****************************************************************************************************** 1.归并排序: 定义:所谓归并就是将两个或两个以上的有序文件合并成为一个新的有序文件.归并排序就是有n个记录的无序文件看成是由n个长度为1的有序子文件组成的文件,然后两两归并,得到n/2个长