准备数据结构上级考试时的练习代码,置于此以备后用!
#include<stdio.h>
#define MAX 100
//插入排序
void insertSort(int* array,int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
//获取当前要进行排序的元素array[i]
temp=array[i];
//比较已排序区的数据与当前要进行排序的数据,如果当前排序的元素较小,
//则后移已排序的元素,找到其合适的位置后插入
for(j=i;j>0&&temp<array[j-1];j--)
{
array[j]=array[j-1];
array[j-1]=temp;
}
printf("第%d趟排序:",i);
printArray(array,n);
}
}
//希尔排序
void shellSort(int* array,int n)
{
int i,j,temp;
int gap=0;
//根据n大小,确定首次排序的分组间隔大小
while(gap<=n)
{
gap=gap*3+1;
}
printf("元素总数为:%d,首次分组间隔gap=%d\n",n,gap);
//当分组间隔大于0时,对各分组的元素进行组内排序
while(gap>0)
{
printf("分组间隔gap=%d\n",gap);
//对组内元素进行直接插入排序
for(i=gap;i<n;i++)
{
//获取下一个要进行排序的组内元素索引
j=i-gap;
temp=array[i];
while((j>=0)&&(array[j]>temp))
{
//将a[j]这一元素移动到组内的下一位置
array[j+gap]=array[j];
j=j-gap;//下一个组内元素的索引
}
array[j+gap]=temp;
}
gap=(gap-1)/3;//获取下一个分组间隔
}
printArray(array,n);
}
//冒泡排序
void bobbleSort(int* array,int n)
{
int i,j,tmp;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(array[i]>array[j])
{
tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
}
}
printArray(array,n);
}
void printArray(int* array,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d \t",array[i]);
}
printf("\n");
}
void main()
{
int array[MAX];
int i,len=0;
int tmpnum;
for(i=0;i<MAX;i++)
{
array[i]=0;
}
printf("please input the number for sort,end with -1\n");
do
{
scanf("%d",&tmpnum);
if(tmpnum!=-1)
{
array[len]=tmpnum;
len++;
}
}
while(tmpnum!=-1);
printArray(array,len);
//printf("冒泡排序\n");
//bobbleSort(array,len);
//printf("直接插入排序\n");
//insertSort(array,len);
printf("希尔排序\n");
shellSort (array,len);
}
分享到:
相关推荐
本主题聚焦于C语言实现的排序算法,其中包括了十种不同的排序方法,每一种都有其独特的应用背景和效率特点。下面我们将详细探讨这些排序算法的原理、步骤以及它们在C语言中的实现。 1. **冒泡排序**:这是一种简单...
9. **代码实现**:C语言实现归并排序时,一般会包含以下步骤: - 分解:将数组分为左右两半,递归调用归并排序函数。 - 解决:对每个子数组进行排序。 - 合并:使用辅助数组合并两个已排序的子数组。 - 返回:将...
总的来说,"各种并行排序算法的C语言实现代码"这个压缩包提供了丰富的学习材料,可以帮助开发者理解和掌握并行排序的实现技术。通过对这些源代码的研究,我们可以更好地应用并行计算,提升大规模数据处理的效率。
C语言插入排序代码实现
冒泡排序 C语言冒泡排序代码
本文将深入探讨C语言实现插入排序的过程及其代码细节。 首先,理解插入排序的基本思想。在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,...
本文将探讨C语言中实现的几种常见的排序算法代码,包括冒泡排序、选择排序、快速排序和希尔排序。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果...
在给定的文件中,`快速排序.cpp`可能包含了具体的C语言实现代码,`qsort.h`可能是自定义的快速排序函数头文件,用于处理链表数据。`vcxproj`文件是Visual Studio项目文件,用于编译和管理源代码,而`.filters`和`....
快速排序 快速排序.c 使用C语言实现的代码 快速排序.c 使用C语言实现的代码 快速排序.c 使用C语言实现的代码
以下是C语言实现选择排序的代码: ```c void selectionSort(int arr[], int n) { int i, j, min_idx; for (i = 0; i ; i++) { min_idx = i; for (j = i+1; j ; j++) if (arr[j] [min_idx]) min_idx = j; ...
冒泡排序算法选择排序算法插入排序c语言实现
根据给定的文件信息,我们可以总结出以下关于“二分法排序算法C语言实现”的相关知识点: ### 1. 二分法搜索算法原理 二分法搜索算法,也称为折半查找算法,是一种在有序数组中查找特定元素的搜索算法。其基本思想...
描述:本文将深入探讨如何使用C语言实现快速排序算法,这是一种高效的排序方法,广泛应用于各种数据结构处理场景。快速排序的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分的所有记录都比另一...
本文将详细介绍C语言实现选择排序法的过程和步骤。 **选择排序的基本思想** 1. **未排序序列**:首先,在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 2. **再扫描未排序序列**:然后,再从剩余未...
c语言实现归并排序,递归方式实现,含详细注释
C语言代码实现下面是一份C语言实现归并排序算法的代码,代码内部有详细的注释,可以帮助理解代码:#include <stdio.h>void merge(int arr[], int l, int m, int r) { int i, j, k; int n1 = m - l + 1; int n2 = r -...
### C语言单词排序轻松实现 在本篇文章中,我们将探讨如何使用C语言对字符串数组中的单词进行排序。本文将详细介绍程序的设计思路、实现方法以及关键代码解析。 #### 程序设计思路 为了实现字符串数组的排序功能...
在编程领域,排序算法是计算机科学中的重要组成部分,特别是在数据处理和算法设计中。...在"Sort"这个VC工程中,你可以找到上述各种排序算法的C语言实现,通过阅读和实践,相信你将对排序算法有更深入的理解。
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 堆排序的平均时间复杂度为Ο...
C语言数据结构实现快速排序代码,已经过调试可以直接使用。