[我做的google数组随机排序的算法]发信人: northor(追求理想的过程是曲折艰辛的!), 信区: Job 标 题: 我做的google数组随机排序的算法 发信站: 瀚海星云 (2006年05月30日23:44:13 星期二), 站内信件 POST 由...+阅读
冒泡排序的问题怎么排序怎么理解
你问的问题让我感觉你是刚刚开始接触c语言吧?用的是Win-tc编译器?*(win-tc编译器的注释得用/*......*/我用的是//,,如果你用win-tc的话,要把注释的符号修改一下,否则会报错。)你应该是不理解冒泡排序才会这么题的。。。下面附上冒泡排序的核心算法,以及for循环输入部分也有注释。。已经编译运行成功了的,还有不懂的请追问。。。(数组的输入当然要用for循环啊~~~~~)希望对你有帮助。。。。
#include
void main()
{
int a[5];
int i,j,temp;
//循环输入
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);//利用for循环依次输入数组的每一个值
}
//冒泡排序算法
for(i=0;i<5;i++) //一共有5个数,需要比较5次
{
for(j=0;j<5-i;j++) //这5个数、每个数需要比较5-i次(就是与它前面已经排好了序的数比)
{
if(a[j]>a[j+1]) //如果前面的数比后面的数大,两个数交换位置
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//循环输出
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
}
冒泡排序法
以数组中的10个数从小到大升序排序为例.
第一个程序,大家都会的:
main()
{
int a[10];
int i,j;
for(i=0;i<10;i++)a[i]=9-i;
for(i=0;i<9;i++)
for(j=0;j<9;j++)
if(a[j]>a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<10;i++)
printf("\n%d",a[i]);
}
第二个程序,内循环次数减小了:
main()
{
int a[10];
int i,j;
for(i=0;i<10;i++)a[i]=9-i;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<10;i++)
printf("\n%d",a[i]);
}
第三个程序,内循环次数再一次减少:
main()
{
int a[10];
int i,j,p;
for(i=0;i<10;i++)a[i]=9-i;
for(i=9;i>0;i=p)
for(j=p=0;j
if(a[j]>a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
p=j;
}
for(i=0;i<10;i++)
printf("\n%d",a[i]);
}
对于我们这个特定的10个数来说,三个程序的执行是一样的,但是如果要排序的内容有很多是已经符合要求顺序的,尤其是只有少量数据需要重新排序的时候,这三个程序的优劣是很明显的.
关于冒泡排序法
Dim i, j, n As Integer Dim a(20) n = InputBox("输入", "多少个数") For i = 1 To n a(i) = InputBox("输入", "第+str(i)+个数") Next i For i = 1 To n - 1 For j = 1 To 20 - i If a(i) < a(j + 1) Then a(0) = a(i) a(i) = a(j) a(j) = a(0) End If Next j Next j For i = 1 To n Print a(i) Next i
就是跟气泡一样,从底下向上冒,实现从小到大,或者从大到小的排序,是排序中比较基本的算法之一。
关于冒泡排序的问题汇编高手请进!
模仿下面自己冒泡排序吧
用冒泡排序法对数据列31,17,34,4,22,18,29,1进行从小到大排序,经过三趟排序后得到的数据列是___
就是通过逐次比较相邻的两个数据的大小来完成。
原则是从左到右比较两个相邻的数比较一次游标向前移动一位(比较结果如果前当前位置的数据大于相邻数据则交换),由于每次都会此次比较的最大数据显示到最后。程序如下:
int[] arr = {31,17,34,4,22,18,29,1};
int len=arr.length();
int i=j=0;
for(;ifor(;j int temp = 0; if(arr[i] >= arr[j]){ temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } 执行结果应该是: 31,17,34,4,22,18,29,1 17,31,4,22,18,29,1,34 17,4,22,18,29,1,31,34 4,17,18,22,1,29,31,34 4,17,18,1,22,29,31,34 4,17,1,18,22,29,31,34 4,1,17,18,22,29,31,34 1,4,17,18,22,29,31,34
延伸阅读:
google数组随机排序的算法由于一开始觉得这个题目不太好做, 就放在最后做了, 结果时间不够,只写了算法: 我考虑题干强调的是一定要随机,就是越乱越好, 于是我就联想到了一堆乒乓球在笼子里摇啊摇的,...
做的google数组随机排序的算法由于一开始觉得这个题目不太好做, 就放在最后做了, 结果时间不够,只写了算法: 我考虑题干强调的是一定要随机,就是越乱越好, 于是我就联想到了一堆乒乓球在笼子里摇啊摇的,...
笔试中各种排序算法的复杂度大家应该注意的是复杂度中带logN的这几个算法! 排序法平均时间最差情形稳定度额外空间备注冒泡O(n2)O(n2)稳定O(1)n小时较好交换O(n2)O(n2)不稳定O(1)n小时较好选择O(n2)O(n...
一道关于排序的java面试题1. 采用快速排序,一般可以达到O(Nlog(N)),最糟糕情况是O(N^2)。 2. 基本思想:对于排列成递增序列,每次将数组分成两半,确保左边的小于右边的,而后递归调用;递减序列相反。 3. 代码:仅...
六部的官职排序是怎样的六部的官职排序依次为吏部、户部、礼部、兵部、刑部、工部。 1、吏部 作为古代主管各级官员的行政机构,自汉朝以后,吏部就被列为尚书省六部之首,肩负着针对文职官员“品秩铨选...
一道关于排序的java面试题1. 采用快速排序,一般可以达到O(Nlog(N)),最糟糕情况是O(N^2)。 2. 基本思想:对于排列成递增序列,每次将数组分成两半,确保左边的小于右边的,而后递归调用;递减序列相反。 3. 代码:仅...
省考面试回答问题时是用首先其次等方式排序还是按照第您好,中公教育为您服务。 答题时需要分清主次,但太刻板太套路化是不可取的。排序词的使用没有固定要求,语句主次分明、意思表达清楚即可。 在答题过程中,声音依旧要宏亮,适当的有...
语文排序题的解题方法排序题是近几年来高考题中常见的语言知识运用类题型。虽然常考,但这道题得分率一直不高。究其根源。与此题题型的时常变化不无关系。纵观近几年高考排序题,题型主要是两种,下面...
最快的排序方法和题目快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这...