用随机数函数产生一个有20个元素的整数数组然后用分别用冒泡排序和插入排序对它进行从小到大的排序并输出

如题所述

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void maopao(int *a, int n) //冒泡排序
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - 1; j++)
{
if (a[j]>a[j + 1])
{
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
for (int i = 0; i < n; i++)
{
printf("%-3d", a[i]);
}
}
void charu(int *a, int n)//插入排序算法;
{
for (int i = 1; i < n; i++)
{
int temp = a[i];
/* printf("temp=%d\n", temp);*/
for (int j = i - 1; j >= 0; j--)
{
if (temp>a[j])
{
a[j + 1] = temp;
break;
}
else
{
a[j + 1] = a[j];
if (j == 0)
a[j] = temp;
}
}
}
for (int i = 0; i < n; i++)
{
printf("%-3d", a[i]);
}
}
void main()
{
int m;
time_t s;
srand((unsigned int)& s);
int *p = (int *)malloc(sizeof (int)* 20);//利用堆区空间;
printf("随机产生的20个数为;\n");
for (int i = 0; i < 20; i++)
{
p[i] = rand() % 100;
printf("%-3d", p[i]);
}
printf("\n你想选择1冒泡排序OR 2插入排序?");
scanf("%d", &m);
if (m == 1)
{
printf("\n冒泡排序后的顺序为:\n");
maopao(p, 20);
}
else
{
printf("\n插入排序后的顺序为:\n");
charu(p, 20);
}
free(p);
system("pause");
}
温馨提示:内容为网友见解,仅供参考
无其他回答

用随机数函数产生一个有20个元素的整数数组然后用分别用冒泡排序和插...
printf("\\n冒泡排序后的顺序为:\\n");maopao(p, 20);} else { printf("\\n插入排序后的顺序为:\\n");charu(p, 20);} free(p);system("pause");}

java程序,随机产生包含20个元素的数组,求出数组中的最大值,最小值和...
import java.util.Arrays;import java.util.Random;public class TestA {public static void main(String[] args){\/\/定义长度20的数组int[] arr=new int[20];\/\/生成随机数工具类Random random = new Random();\/\/总值double sum=0;for(int x=0;x<arr.length;x++){\/\/随机生成数放到数组里arr...

C语言编程:试用随机函数产生20个〔100,1000〕之间的整数,并按从小到大...
a[i] = getRandNum()%899 +101; \/\/先产生0-899然后加上101就可以得到100到1000 printf("%d,",a[i]);} for(int i=0;i<20;i++) \/\/冒泡排序法 { for(int j=19;j>i;--j){ if(a[j]<a[j-1]){ int temp = a[j];a[j] = a[j-1];a[j-1] = temp;} } } print...

随机产生20个10~99之间的整数,要求:1) 用冒泡法排序(降序)
int[] number = new int[20];private void Form1_Load(object sender, EventArgs e){ int x;string str = "";Random r = new Random();for (i = 0; i < 20; i++){ x = r.Next(1, 99);number[i] = x;str = str + number[i].ToString() + " ";} tBoxInput.Text = ...

用随机函数产生20个10~90之间的整数,求出其中的素数,然后用冒泡法只对...
srand(time(NULL));\/\/以时间作为产生随机数的种子.这句产生真正的随机数,若没有此句,程序每次运行产生的结果一样 printf("产生20个随机数开始\\n");for ( i = 0; i <20; i++){ array[i] = rand()%81+10;printf("%d\\t",array[i]);} printf("\\n素数有以下几个: \\n");for ( ...

用matlab编写两个排序函数,怎么分别使用插入排序算法、起泡排序算法...
用matlab编写两个排序函数,怎么分别使用插入排序算法、起泡排序算法,解决办法:冒泡法排序:r=length(x); for i=1:r-1 for j=i+1:r if x(i)>x(j)temp=x(i); x(i)=x(j);x(j)=temp;endendend y=x;function y=insertionsort(x)插入法排序:r=length(x); for i=1:r for j...

用C#随机生成几个数并实现冒泡排序?
当然,以下是一个简单的C#程序,该程序首先生成一个随机数数组,然后使用冒泡排序算法对其进行排序:csharpusing System;class Program { static void Main(string[] args){ \/\/ 定义数组大小 int size = 10;int[] array = new int[size];\/\/ 生成随机数 Random rand = new Random();for (int ...

插入排序和冒泡排序
在一个有序的数组中插入一个数据,要求该数据插入后数组仍然有序。在插入排序中有序的数组就是指已经排好序的区间,新增的数据就是从未排序的区间中取出一条数据插入即可。每一次都是从数组中的第一个元素跟下一个元素做对比,然后将最大或最小的数据放到最后。最终产生有序或倒叙的排序结果。有序度...

...元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法_百度...
冒泡排序法是另一种直观的排序算法,通过相邻元素的比较和交换实现排序。每次遍历整个列表,将最大(或最小)元素移动到序列的末尾。冒泡排序法的优化在于一旦在一次遍历中没有进行任何交换,即可判断列表已排序完成,从而提前终止算法。尽管存在这种优化,冒泡排序法的效率仍然不高,但在理解排序算法的基本...

用数组作函数参数,定义一个实现冒泡排序的函数,在主函数中完成数据的输...
c语言的代码如下:include<stdio.h> void Bubble_Sort(int num[50],int n){\/\/传入数组和数组的大小,冒泡排序函数int i,j,temp;for(i=0;i<n;i++){for(j=0;j<n-1-i;j++){if(num[j]>num[j+1]){temp=num[j];num[j]=num[j+1];num[j+1]=temp;} }} } int main(){ ...

相似回答