C语言是学习计算机基础,暑假一直在学Java,开学了数据结构上机,老师让编一个实现N个整数排序,
并插入一个整数的小程序,可是我整节课都没搞定。郁闷了许久,觉得自己太过舍本逐末了,基础都忘光了。
咳~~~~于是一阵恶补。好好看了看排序,总结及源码如下:
冒泡排序:
<!---->#include "stdio.h"
main()
{
int i,j,temp,s;
int a[10];
printf("请输入10个整数:");
for(i=0;i<10;i++)
scanf ("%d,",&a[i]);
for(j=0;j<=9;j++)
{ for (i=0;i<10-j;i++)
if (a[i]>a[i+1])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
printf("冒泡排序后的数列为:");
for(i=0;i<10;i++)
printf("%3d",a[i] );
printf("\n");
scanf("%d",&s);//防止运行窗口迅速关闭
}
选择排序:
Code
<!---->#include "stdio.h"
void main()
{
int a[10];
int i,j,t,s;
printf("请输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=9;i>j;i--)
if(a[j]>a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
printf("选择排序后的数列为:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
scanf("%d",&s);//同上
}
实现N个整数排序,并插入一个整数源码:
<!---->#include <stdio.h>
main(){
int n;
int a[100];
int i,j,k,t,x,s;
printf("输入数列长度:\n");
scanf("%d",&n);
printf("请输入%d个整数:\n",n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){// 排序
k=i;
for(j=i;j<n-1;j++){
if(a[k]>a[j+1]){
k=j+1;
}
}
if(k!=i){
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
printf("\n");
printf("排序后的数列:\n");
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
printf("请输入要插入的数:");
scanf("%d",&x);
for(i=0;i<n;i++){
if(x>a[i]&&x<a[i+1]){
k=i+1;
break;
}
}
for(i=n;i>k;i--){
a[i]=a[i-1];
}
a[k]=x;
printf("插入%d后的排序数列为:",x);
for(i=0;i<=n;i++){
printf("%d ",a[i]);
}
scanf("%d",s); //同上
}
全部代码都测试通过,正确无误!
施杨出品!!!
分享到:
相关推荐
- 定义数组:C语言中,可以使用`int arr[N]`来定义一个整数数组,其中N是数组的大小。 - 循环结构:使用`for`循环遍历数组,从第二个元素开始。 - 内部嵌套循环:对于每个未排序的元素,使用`while`循环找到它在已...
本文将深入讲解如何在CFREE 5.0环境下编写一个C语言的插入排序程序。 ### 1. 插入排序基本概念 插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。它的时间复杂度在最好...
经典的插入排序算法,C语言实现,数据结构必备
本次文章将详细介绍如何使用C语言实现插入排序,并深入解析其实现细节。 #### 插入排序的基本思想 插入排序的核心思想是将数组分为已排序部分和未排序部分。初始时,数组的第一个元素被视为已排序部分,其余元素为...
c语言实现三种排序算法(冒泡,插入,快速)
选择排序是一种简单的排序算法,它的工作原理是每一次从待排序的数据元素中选择出最小(或最大)的一个元素,存放到排序的起始位置,然后从剩下的未排序元素中继续寻找最小(或最大)元素,依次类推,直到所有元素都...
在C语言中实现快速排序,首先我们需要定义一个函数来执行主要的排序操作。这个函数通常称为`quick_sort()`,它接受两个参数:一个指向数组的指针和两个整数,分别表示要排序的数组起始和结束位置的索引。 ```c void...
这里我们主要探讨四个由C语言实现的排序程序:快速排序、插入排序、自底向上排序和基数排序。 首先,快速排序是一种分治策略的典型应用,由C.A.R. Hoare在1960年提出。其基本思想是选择一个基准值,将数组分为两...
在C语言中,我们可以定义一个指向数组的指针,通过递增或递减指针来遍历数组,比较相邻元素并根据需要交换它们。 2. 选择排序:每次找到剩余部分的最小(或最大)元素,然后与第一个未排序元素交换。指针可以用来...
C语言实现中,通常用一个临时变量来辅助交换过程,确保每次找到的最小元素都能被移到前面。 3. **插入排序**:将数组分为已排序和未排序两部分,每次取未排序部分的第一个元素,插入到已排序部分的合适位置。C语言...
选择排序每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。时间复杂度同样为O(n^2)。 3. **插入排序(Insertion Sort)**: 插入排序通过构建有序...
下面是一个使用C语言实现插入排序法的示例代码: ```c #include "stdio.h" #define N 6 void fun(int a[], int x) { int i, j = N - 1; for (i = 0; i < N - 1; i++) { if (x [i]) { for (; j > i; j--) a[j] = ...
本篇文章将详细介绍一个使用C语言编写的直接插入排序算法。直接插入排序是一种简单的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现...
在C语言中,可以使用一个外层循环按顺序遍历数组,同时用一个内层循环找到每个元素的正确位置并移动元素。插入排序的平均时间复杂度为O(n²),但在接近有序的数据上表现优秀,可达O(n)。 4. 快速排序(Quick Sort)...
本项目旨在实现并比较六种经典的排序算法——直接插入排序、折半插入排序、起泡排序、简单选择排序、堆排序以及2-路归并排序,使用C语言编程。为了全面评估这些算法,我们将在一组随机生成的30000个整数上运行它们,...
本项目提供的“插入排序算法C语言程序”是一个实现这一算法的实例,有助于理解插入排序的工作原理。 1. 插入排序算法概念: 插入排序的核心在于每次将一个待排序的记录,按其关键字大小插入到前面已经排序的子序列...
C语言程序设计-排序算法:理解和重点掌握选择法排序、冒泡法排序、插入法排序的思想 ⑴编写程序,对n个整数用冒泡法排序(从小到大或从大到小); ⑵编写程序,对n个整数用选择法排序(从小到大或从大到小); ⑶...
2. 插入排序:使用指针实现插入排序,首先将数组排序,然后在有序数组中插入新的元素并保持有序。这里,指针用于遍历数组和查找插入位置。 3. 字符串处理:`newcopy`函数通过指针遍历字符串,删除小写字母。指针在...
冒泡排序同样具有O(n^2)的时间复杂度,但它是一个稳定的排序算法。以下是C++实现的冒泡排序函数: ```cpp void bubble_sort(int a[], int n) { int i, j, tmp; for (i = 0; i < n; ++i) { for (j = n - 1; j > i...
1. **插入排序**:插入排序是一种简单直观的排序算法,它的工作原理是通过构造一个有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用...