C语言数据结构_排序算法大全

时间:2024.5.13

数据结构---C语言排序算法大全

#include <stdio.h>

#include <stdlib.h>

#define M 100

void InsertionSort( int a[ ],int length )//插入排序

{

}

void BInsertSort(int a[ ],int length)//折半插入排序

{

}

void Choice(int a[ ],int length)//选择排序

{

int i,j,temp,index; int i,j,mid,temp; int low,high; for(i = 1;i < length;i++) { } low = 0; high = i-1; temp = a[i]; while(low <= high) { } for(j = i-1;j > high;j--) a[j+1] = a[j]; a[high+1] = temp; mid = (low+high)/2; if(temp < a[mid]) high = mid-1; low = mid+1; else int i,j,temp; for( i = 1;i < length;i++) { } temp = a[i]; j = i-1; while( temp < a[j] && j >= 0) { } a[j+1] = temp; a[j+1] = a[j]; j--;

{

index = i;

for(j = i + 1; j < length; j++)

if(a[j] < a[index])

index = j; temp = a[index]; a[index] = a[i]; a[i] = temp;

} }

void Effervesce(int a[ ],int length)//冒泡排序

{

{

int i,j,temp; if(start>=stop) return; i=start; j=stop; temp=a[i]; while(i<j) { while((i<j)&&(a[j])>temp) j--; if(i<j) { int i,j,temp; for(i = 1;i<length;i++) /* for(i = 1;i<length;i++) } for(j = length-1;j > i-1;j--) if(a[j]<a[j-1]) { }*/ temp = a[j]; a[j] = a[j-1]; a[j-1] = temp; for(j = 0;j<length-i;j++) if(a[j]>a[j+1]) { } temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; void QuickSort(int a[ ],int start,int stop)//快速排序

} } } i++; while((i<j)&&(a[i]<temp)) i++; if(i<j) { } a[j]=a[i]; j--; a[i]=temp; QuickSort(a,start,i-1); QuickSort(a,i+1,stop);

void Marge(int src[],int dest[],int low,int mid,int high)//归并排序 第一步 {

}

void MergeProcess(int src[],int dest[],int n,int blocksize)//归并排序 第二步 {

int i,low,mid,high; low=0; while(low+2*blocksize<=n) { } mid=low+blocksize; high=low+2*blocksize; Marge(src,dest,low,mid,high); low+=2*blocksize; int i,j,k; i=low; j=mid; k=low; while(i<mid&&j<high) { } if(i<mid) while(i!=mid) dest[k++]=src[i++]; if(j<high) while(j!=high) dest[k++]=src[j++]; else if(src[i]<src[j]) dest[k++]=src[i++]; dest[k++]=src[j++]; else

} { } else { } i=low; while(i < n ) dest[i]=src[i++]; mid = low + blocksize; high = n; Marge(src,dest,low,mid,high);

void MergeSort(int src[],int n)//归并排序▂第三步 {

}

int main( )

{

} int N,i,*p; printf("输入数组长度: \nN="); scanf("%d", &N); { } printf("输入 %d 个数簓元素:\n",N); for (i = 0; i < N; i++) scanf("%d", p+i); MergeSort(p,N); for(int i = 0;i < N;i++) printf("%d ",*(p+i)); printf("Not able to allocate memory. \n"); exit(1); int *dest=(int *)malloc(n*sizeof(int)); int blocksize=1; while(blocksize < n) { } MergeProcess(src,dest,n,blocksize); blocksize *= 2; MergeProcess(dest,src,n,blocksize); blocksize *= 2; free(dest); if ((p = (int *) malloc (N*sizeof(int))) == NULL)


第二篇:c语言 排序算法总结


排序算法总结

选择法排序:

for(i=0;i<9;i++)

{ max=i;

for(j=i+1;j<10;j++) if (a[max]<a[j])

max=j;

/* max为查找范围最大数所在元素下标 */ if (max != i) (if语句可省略) { temp=a[i];

a[i]=a[max];

a[max]=temp;}

}

直接排序法:

for(i=0;i<9;i++)

for( j=i+1;j<10;j++)

/* 当前元素与后续各元素逐个比较交换 if (a[i]<a[j])

{ temp=a[i];

a[i]=a[j];

a[j]=temp;

} */

冒泡法排序:

for(i=9;i>=1;i--)

{ k=i;

/* k为每轮比较范围的终止元素下标 */ for(j=0;j<=k-1;j++) if (a[j]>a[j+1])

{ temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;}

}

冒泡法排序的改进:

for(i=9;i>=1;i--)

{ swap=0;

for(j=0;j<=i-1;j++) if (a[j]>a[j+1])

{ temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

swap=1; }

if(swap==0) break;

}

更多相关推荐:
数据结构排序超级总结

一插入排序InsertionSort1基本思想每次将一个待排序的数据元素插入到前面已经排好序的数列中的适当位置使数列依然有序直到待排序数据元素全部插入完为止2排序过程示例初始关键字493865977613274...

数据结构各种排序算法总结

数据结构各种排序算法总结计算机排序与人进行排序的不同计算机程序不能象人一样通览所有的数据只能根据计算机的quot比较quot原理在同一时间内对两个队员进行比较这是算法的一种quot短视quot1冒泡排序Bubb...

数据结构算法排序总结

数据结构与算法总结姓名:**学号:**班级:12计本(2)班这个学期在老师的带领下我们学习了数据结构与算法这门课程。在本次数据结构与算法的学习中最令我深刻的是关于几种排序算法的学习,所以在这里我想对我本学期所学…

数据结构中排序总结

排序总结排序方法平均时间最坏时间辅助存储简单排序O(n2)O(n2)O(1)快速排序O(nlogn)O(n2)O(logn)堆排序O(nlogn)O(nlogn)O(1)归并排序O(nlogn)O(nlogn)…

数据结构之排序总结(C语言)

数据结构实验课程之手工执行一下排序算法写出每一趟排序结束时的关键码状态includeltstdiohgtincludeltstdlibhgtdefinemaxsize20结构体的定义typedefstructi...

数据结构排序算法总结I

数据结构排序算法总结I考研复习到数据结构排序这章了这章的内容比较经典都是一些很好的算法将来很可能会用得到总结一下加深一下印象文章篇幅有点大请点击查看更多下面是跳转链接12312三选择排序1简单选择排序2堆排序五...

数据结构中常见的排序算法总结

几种常见排序算法的比较与实现1冒泡排序BubbleSort冒泡排序方法是最简单的排序方法这种方法的基本思想是将待排序的元素看作是竖着排列的气泡较小的元素比较轻从而要往上浮在冒泡排序算法中我们要对这个气泡序列处理...

数据结构总结

排序算法总结一综述学的排序算法有插入排序合并排序冒泡排序选择排序希尔排序堆排序快速排序计数排序基数排序1所谓排序稳定就是指如果两个数相同对他们进行的排序结果为他们的相对顺序不变例如A12121这里排序之后是A1...

数据结构(学习小结重点总结)

数据结构复习重点归纳适于清华严版教材一数据结构的章节结构及重点构成数据结构学科的章节划分基本上为概论线性表栈和队列串多维数组和广义表树和二叉树图查找内排外排文件动态存储分配对于绝大多数的学校而言外排文件动态存储...

数据结构实验报告之排序(终极版)

数据结构实验报告实验四排序一需求分析一实验目的1掌握插入排序算法直接插入希尔排序2掌握交换排序算法冒泡排序快速排序3掌握选择排序算法直接选择堆排序4掌握归并排序算法5掌握基数排序算法二实验内容给定一个序列如45...

焦作数据结构实验报告

河南省高等教育自学考试实验报告册计算机及应用专业本科段数据结构姓名李威威准考证号所属地市焦作市实验地点焦作大学实验实训中心实验日期20xx0921实验总成绩指导教师签名实验单位实验室意见主考院校审核意见河南科技...

河南自考数据结构实验报告

河南省高等教育自学考试实验报告册计算机及应用专业本科段数据结构姓名准考证号所属地市实验地点实验日期2实验总成绩指导教师签名实验单位实验室意见主考院校审核意见河南科技大学自学考试办公室20xx年9月21日目录一试...

数据结构排序总结(27篇)