编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

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

wxchong 2025-07-01 23:45:19 开源技术 2 ℃ 0 评论

这两天研究编程的一些算法,就是排序算法,就是插入排序法。我从资料中看到了一个程序。以前我用编程猫给做出来了,而且运行效果还可以。今天我想用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图形化编程程序截图。

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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表