插入排序法的两种C语言和图形化编程的的程序

yumo6662周前 (09-06)技术文章10

这两天研究编程的一些算法,就是排序算法,就是插入排序法。我从资料中看到了一个程序。以前我用编程猫给做出来了,而且运行效果还可以。今天我想用Scratch给他做出来,我发现这个Scratch没有退出循环这个命令,所以那个程序不能用,就从网上再找了一个,这个也是c语言写的。现在我要把这个c语言给转化成图形化编程。今天下午费了半天的劲,算是把这个给弄出来了。前面的那个是用c语言给转化成了编程猫的图形化编程程序的,后面的是用scratch编写的图形化编程程序。下面列出来的是第一个和第二个c语言的程序。图形化编程的我就截图给大家看看。

public static void sort(int[] arr) {

int n = arr.length;

for (int i = 1; i < n; ++i) {

int value = arr[i];

int j = 0;//插入的位置

for (j = i-1; j >= 0; j--) {

if (arr[j] > value) {

arr[j+1] = arr[j];//移动数据

} else {

break;

}

}

arr[j+1] = value; //插入数据 }

}

这是第一个c语言程序。

因为这里面有退出循环就是break。Scratch里面没有break,所以这个程序不能用。我就只好又找了一个这样的程序。

#include<stdio.h>

void Print(int array[],int len){

for(int i=0;i<len;i++){

printf("%d ",array[i]);

}

printf("\n");

}

/*直接插入排序*/

/*

*算法描述:

*1.将待排序序列分为两部分,一部分有序一部分无序

*2.第一个元素为有序序列,从第二个元素到最后为无序序列

*3.将无序序列中每一个元素依次插入到有序序列的合适位置--从小到大(从大到小)

*合适的位置:待排序元素大于或等于(小于)该元素

*/

void InsertSort(int array[],int len){

int i,j;

//第一个for循环 遍历无序序列

for(i=1;i<len;i++){ //从数组的第二个元素开始依次遍历无序序列

int tem = array[i]; //临时保存将要排序的元素

//第二个for循环遍历有序序列

for(j=i-1;tem<=array[j]&&j>=0;j--){ //将待排序元素依次和有序序列中的元素比较

//待排序元素 小于 有序序列中当前元素时 将该元素后移

array[j+1] = array[j];

}

array[j+1] = tem; //待排序元素 大于 有序序列最后一个元素 直接将该元素插入到有序序列最后

}

printf("\n排序完成!\n\n");

}

main(){

int array[10] = {4,3,10,5,6,7,1,2,8,9} ;

int len = sizeof(array) / sizeof(int);

printf("初始序列:\n");

Print(array,len);

InsertSort(array,len);

printf("排序后序列:\n");

Print(array,len);

这个是他c语言程序运行的结果。

这个呢是我编写的scratch图形化编程程序截图。

程序都已经运行过了,是正常的。

相关文章

「初识C语言」编译过程_c语言编译过程详解

C语言编译过程认识C编译执行过程,是C学习的开端。我们来简单说C语言从编码编译到执行要经历一下过程:C源代码编译---->形成目标代码,目标代码是在目标机器上运行的代码。连接---->将目...

C语言模块程序设计?源文件和头文件如何划分模块?linux C第32讲

6 .c源文件和.h头文件配合使用假设我们开发一个图书馆管理系统,读者的信息使用reader.c和reader.h文件来管理,那么,读者在登记的时候,需要输入年龄,那么,可以设计如下的函数,接收登记读...

C程序设计之:1-1/2+1/3-... + 1/n 的和

求:1 - 1/2 + 1/3 - .... + 1/n 的和。和这道题不同的是,该题目里面,偶数项是负数,奇数项是正数。#include <iostream> using namespa...

C语言也可以制作视频播放器?只需5分钟即可制作一个自己的播放器

上一节简要的介绍了如何编写C语言程序调用 FFmpeg 库,读取视频文件,并将之逐帧转换为 ppm 图片,最后通过 save_frame() 函数将转换后的 ppm 图片保存到磁盘。本节将在上一节的基...

一起学《C程序设计》第六课——数组、字符串及实战练习

在之前的第三课中学习了基本数据类型,第五课学习了循环结构程序,做练习的时候处理的是一些有规律的数据,比如1~100的正整数,而当我们面对一堆没有规律的数据时该怎么去循环处理呢?把数据组合在一起构成一个...

每天一道c语言编程题,第四题(c语言经典 求素数)

编写一个程序,输入一个整数n,输出n以内的所有素数。#include <stdio.h>int main() { int n, i, j, flag; printf("请输入一...