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;
}
}
}