1. 用js做,要用到冒泡和数组,用户输入十个数,从小到大输出
js 锻炼这些没意义,数组有个sort方法,穿个比较函数就可以自动排序。俺会冒泡排序。js的功能别关注算法这块的。我个人建议!算法可以用c语言学。一般java、c++这种语言算法别人已经写好了。
2. 数组的冒泡排序
现在我们考虑这个双循环
我们发现,内层代码没有用到外层的变量i
因些外层只是控制次数也就是n-1次,因为,每一趟先最大的一个
n-1趟就完成了,
接着看内循环,每次比如j和j+1
但是比如上一趟排列已经排好一个就只用少循环一次就够了,
意味就内层要第一次循环n-1,第二次循环n-2以此类推
这个n-的数就可以与外层的i联系,只是少了循环次数而已
如果你写成你的也没什么不对,只是要比别人的程序多几次没用的循环而已
3. 二维数组冒泡,要求不转换一维数组进行冒泡,代码如下。
#include<stdio.h>
intmain(){
inta[4][4]={{3,9,2,1},{2,3,1,4},{5,4,8,0},{6,5,4,8}};
inti,j,k,temp;
printf("排序前:
");
for(i=0;i<4;++i){
for(j=0;j<4;++j){
printf("%3d",a[i][j]);
}
printf("
");
}
printf("
");
for(k=0;k<4;++k){
for(i=0;i<4-1;++i){
for(j=i+1;j<4;++j){
if(a[k][j]<a[k][i]){
temp=a[k][i];
a[k][i]=a[k][j];
a[k][j]=temp;
}
}
}
}
printf("排序后:
");
for(i=0;i<4;++i){
for(j=0;j<4;++j){
printf("%d",a[i][j]);
}
printf("
");
}
printf("
");
/*
printf("Pleaseinput20numbers:
");
for(p=0;p<2;p++)
for(i=0;i<10;i++)
scanf("%d",&a[p][i]);
for(p=0;p<2;p++)
for(i=1;i<20;i++)
for(j=0;j<20-i;j++)
if(a[p][j]>a[p][j+i]){
temp=a[p][j];
a[p][j]=a[p][j+i];
a[p][j+i]=temp;
}
//打印排序结果2组10个整数,它们分开排列,我想知道有没有什么思路是可以让
//a[0][9]和a[1][0]继续往上面进行冒泡,可以这个循环值第二个条件满足,等于是从a[1]的开始,从0到9还是排序,而不是一次性从a[0][0]到a[1][9]的排序。
for(i=0;i<2;i++)
for(j=0;j<10;j++)
printf("排序=%d
",a[i][j]);
*/
return0;
}
4. 数组的冒泡排序程序
把每行4端数据定义为一个结构体,读取数据后再进行排序。至于冒泡算法网络一下就有了。
5. 跪求!!定义数组冒泡法排序!!!!!内祥~!
以下是C/c++编写的代码,希望能帮你解决好问题
#include<stdio.h>
voidsort(floata[],intn)
{
floatk=0;
for(inti=0;i<n-1;i++)
{
for(intj=0;j<n-i-1;j++)
{
if(a[j]<a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
}
voidinsert(floata[])
{
printf("请输入一个成绩 ");
floati;
scanf("%f",&i);
intk;
for(k=9;k>0;k--)
{
if(a[k]<i)a[k+1]=a[k];
else
{
a[k+1]=i;
return;
}
}
if(k==0)
a[0]=i;
}
voidchangeturn(floata[],intn)
{
floatk;
for(inti=0;i<n/2;i++)
{
k=a[i];
a[i]=a[n-1-i];
a[n-1-i]=k;
}
}
voidmain()
{
printf("请输入10个成绩 ");
floata[11];
for(inti=0;i<10;i++)
{
scanf("%f",&a[i]);
}
printf("原始数据为: ");
for(i=0;i<10;i++)
{
printf("%.2f",a[i]);
}
printf("排序后为: ");
sort(a,10);
for(i=0;i<10;i++)
{
printf("%.2f",a[i]);
}
insert(a);
printf("插入一数据后为: ");
for(i=0;i<11;i++)
{
printf("%.2f",a[i]);
}
printf("倒叙后为: ");
changeturn(a,11);
for(i=0;i<11;i++)
{
printf("%.2f",a[i]);
}
printf(" ");
}
6. 关于PHP冒泡排序法。
前台输入部分我就不写了,管你是用字符串形式一起传到后台还是说先用js存储了再提交到后台,总之假设你前天都获得了一个一维数组,这里给一个从大到小,一个从小到大的写法:
从大到小:
<?php
/**
* 冒泡排序算法示例
*/
// 这里以一维数组做演示
$demo_array = array(23,15,43,25,54,2,6,82,11,5,21,32,65);
// 第一层for循环可以理解为从数组中键为0开始循环到最后一个
for ($i=0;$i<count($demo_array);$i++) {
// 第二层将从键为$i的地方循环到数组最后
for ($j=$i+1;$j<count($demo_array);$j++) {
// 比较数组中相邻两个值的大小
if ($demo_array[$i] < $demo_array[$j]) {
$tmp = $demo_array[$i]; // 这里的tmp是临时变量
$demo_array[$i] = $demo_array[$j]; // 第一次更换位置
$demo_array[$j] = $tmp; // 完成位置互换
}
}
}
// 打印结果集
echo '<pre>';
var_mp($demo_array);
echo '</pre>';
主要的代码已经给你写出来了,你自己把前端部分加上就行了
7. 对数组A进行插入 冒泡 选择排序
#include <iostream>
using namespace std;
void InsertSorting(int R[],int n , int type)
{
if( type == 1)
{
for(int i=1;i<n;i++)
{
int temp=R[i];
int j=i-1;
while((j>=0)&&(temp<R[j]))
{
R[j+1]=R[j];
j--;
}
R[j+1]=temp;
}
}
else
{
for(int i=1;i<n;i++)
{
int temp=R[i];
int j=i-1;
while((j>=0)&&(temp>R[j]))
{
R[j+1]=R[j];
j--;
}
R[j+1]=temp;
}
}
}
void BubbleSorting(int R[],int n, int type)
{
int i = 0;
if( type == 1)
{
for(int i=1; i<n; i++)
{
for(int j=0; j<n-i; j++)
{
if( R[j] > R[j+1] )
{
int temp ;
temp = R[j];
R[j] = R[j+1];
R[j+1] = temp;
}
}
}
}
else
{
for(int i=1; i<n; i++)
{
for(int j=0; j<n-i; j++)
{
if( R[j] < R[j+1] )
{
int temp ;
temp = R[j];
R[j] = R[j+1];
R[j+1] = temp;
}
}
}
}
}
void SelectSorting(int number[] , int n)
{
int i, j, m;
for(i = 0; i < n-1; i++)
{
m = i;
for(j = i+1; j < n; j++)
{
if(number[j] < number[m])
m = j;
if( i != m)
{
int temp ;
temp = number[i];
number[i] = number[m];
number[m] = temp;
}
}
}
}
const int MAX = 5;
int main()
{
int a[MAX] = { 10, 60, 2 , 50 , 6};
InsertSorting( a, MAX , 1 );
for(int i=0; i<MAX; i++)
{
cout<< a[i] <<endl;
}
cout<< endl;
BubbleSorting( a, MAX , 1 );
for( i=0; i<MAX; i++)
{
cout<< a[i] <<endl;
}
SelectSorting( a, MAX );
cout<< endl;
for( i=0; i<MAX; i++)
{
cout<< a[i] <<endl;
}
return 0;
}
8. javascript中的冒泡排序法
冒泡排序的原理是这样的,比方说有五个数字54321,要按从小到大排列;
首先比较前两个,就是5和4,如果第一个小于第二个,不做操作,如果第一个大于第二个,那么交换二者的位置,即变成45321,然后比较第二个和第三个,交换位置,变成43521,然后第三个和第四个,第四个和第五个,这样一次循环下来,变成43215
所以,一层循环的效果就是挑出最大的一个数字5,冒泡到最后面。但是还要挑出第二大,第三大的数字,等等。所以一层循环根本就不够用,必须再套一层才行。像这个例子,五个数字,起码要进行四轮循环才行。至于为什么要this.length-i,是因为第一次比较五个数字,第二个只要比较前四个就行了,第五个肯定是最大的了。。
var array = [5, 4, 3, 2, 1];
var temp = 0;
for (var i = 0; i < array.length; i++)
{
for (var j = 0; j < array.length - i; j++)
{
if (array[j] > array[j + 1])
{
temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
console.log(array);
9. 如何实现一维浮点型数组的冒泡排序函数
//你调用错了,应该这样maopao(number,5);
voidmaopao(float*src,intlen)
{
floattem;
for(inti=0;i<len;i++)
{
for(intj=0;j<len-i-1;j++)
if(src[j]>src[j+1])
{
tem=src[j];
src[j]=src[j+1];
src[j+1]=tem;
}
}
}