利用随机函数产生30000个随机整数,利用插入排序,起泡排序,选择排序,快速排序,

利用随机函数产生30000个随机整数,利用插入排序,起泡排序,选择排序,快速排序,,第1张

#define _CRT_SECURE_NO_WARNINGS

#include<stdioh>

#include<stdlibh>

#include<timeh>

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;

}

}

}

printf("冒泡排序后的顺序为:\n");

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;

}

}

}

printf("\n插入排序后的顺序为:\n");

for (int i = 0; i < n; i++)

{

printf("%-3d", a[i]);

}

}

void choose(int a[], int n)//从小到大;

{

int min;

for (int i = 0; i < n - 1; i++)

{

min = i;

for (int j = min + 1; j<n; j++)//一次循环比较;

{

if (a[min]>a[j])

{

min = j;

}

}

if (min != i)

{

int temp = a[i];

a[i] = a[min];

a[min] = temp;

}

}

printf("\n选择排序后的顺序为:\n");

for (int i = 0; i < n; i++)

{

printf("%-3d", a[i]);

}

printf("\n");

}

void main()

{

int m;

time_t s;

srand((unsigned int)& s);

int p = (int )malloc(sizeof (int) 30000);//利用堆区空间;

printf("随机产生的20个数为;\n");

for (int i = 0; i < 30000; i++)

{

p[i] = rand() % 100;

printf("%-3d", p[i]);

}

printf("\n你想选择1冒泡排序OR 2插入排序 OR 3选择排序?");

scanf("%d", &m);

switch (m)

{

case 1:maopao(p, 30000); break;

case 2:charu(p, 30000); break;

case 3:choose(p, 30000); break;

}

free(p);

system("pause");

}

快速排序由C A R Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

给你个思路自己敲吧,首先,对于a-z这26个字母,在java中,每个字母字符对应的数值范围是:a-z在97-122,A-Z在65-90之间,你这里说的是小写的吧,那么就定义个初始值int a = 97;

然后使用Random这类,产生一个0-25之间的数值x,之后char c = (char)(a+x);这样就转成随机的一个字符了,至于能不能重复,你可以自己决定,写个方法去过滤,如此产生,反复产生到是个字符后就行了,你可以定义一个10-长度的整型数组去存储这10个产生的字符,之所以用数组,是数组有一个排序的方法,很方便排序

procedure qsort(l,r:integer);

var i,j,x,t:longint;

begin

i:=l;j:=r;x:=a[random(r-l+1)+l];

repeat

while a[i]<x do inc(i);

while a[j]>x do dec(j);

if i<=j then begin

t:=a[i];

a[i]:=a[j];

a[j]:=t;

inc(i);

dec(j);

end;

until i>j;

if i<r then qsort(i,r);

if j>l then qsort(l,j);

end;

这是我编的快排过程

是随机啊

如果一直是1,n-1的划分(就是最差情况,不二分)就成O(n^2)的算法了

就起不到快排的作用了

以上就是关于利用随机函数产生30000个随机整数,利用插入排序,起泡排序,选择排序,快速排序,全部的内容,包括:利用随机函数产生30000个随机整数,利用插入排序,起泡排序,选择排序,快速排序,、随机函数产生N个随机整数采用多种方法对这些数进行排序然后分析各自的所需的排序时间找出较快的排序算法、java编程:1.对于0到9,a到z的数值随机生成一个10位的数组,并用快速排序实现排序输出(带验证等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10169631.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存