冒泡排序法Word文件下载.docx

上传人:b****6 文档编号:18373983 上传时间:2022-12-15 格式:DOCX 页数:15 大小:18.87KB
下载 相关 举报
冒泡排序法Word文件下载.docx_第1页
第1页 / 共15页
冒泡排序法Word文件下载.docx_第2页
第2页 / 共15页
冒泡排序法Word文件下载.docx_第3页
第3页 / 共15页
冒泡排序法Word文件下载.docx_第4页
第4页 / 共15页
冒泡排序法Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

冒泡排序法Word文件下载.docx

《冒泡排序法Word文件下载.docx》由会员分享,可在线阅读,更多相关《冒泡排序法Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

冒泡排序法Word文件下载.docx

array[j-1]){

  //小的总是往前排

  bubble=array[j]

  array[j]=array[j-1];

  array[j-1]=bubble;

  }

  io.print("

----------------"

冒泡排序(交换类换排序)"

  array={2;

46;

5;

17;

1;

2;

3;

99;

12;

56;

66;

21};

  bubble_sort(array,1,#array)

  //输出结果

  for(i=1;

#array;

1){

  io.print(array[i])

C语言

  基础结构

  */

  voidbubble_sort(int*x,intn)

  {

  intj,k,h,t;

  for(h=n-1,h=k;

h>

0;

h--)/*循环到没有比较范围*/

  for(j=0,k=0;

j<

h;

j++)/*每次预置k=0,循环扫描后更新k*/

  if(*(x+j)>

*(x+j+1))/*大的放在后面,小的放到前面*/

  t=*(x+j);

  *(x+j)=*(x+j+1);

  *(x+j+1)=t;

/*完成交换*/

  k=j;

/*保存最后下沉的位置。

这样k后面的都是排序排好了的。

*/

  程序1:

  voidbubble_sort(intarray[],intn)

  inti,j,flag,temp;

  for(i=0;

i<

n-1;

i++)

  flag=1;

  for(j=0;

j<

n-i-1;

j++)

  if(array[j]>

array[j+1])

  temp=array[j];

  array[j]=array[j+1];

  array[j+1]=temp;

  flag=0;

  if(1==flag)

  printf("

%d"

i);

//首先打印出,在第几层循环时顺序已排好

  break;

//跳出循环

  return;

  程序2:

(可进行2个数以上大小比较,程序参考作者:

赵杰)

  #include<

STDIO.H>

  main()

  longa,x,k,i[100],s;

  charch;

  for(a=0;

;

a++)

输入一个数,输完一个数按回车,最后一个数末尾要加n:

"

);

  scanf("

%ld%c"

&

i[a],&

ch);

  if(a==99)

注意!

输入的数超过100个"

  elseif(ch=='

n'

  do{

  x=0;

  for(k=0;

k<

a;

k++)

  if(i[k]>

i[k+1])

  s=i[k+1];

i[k+1]=i[k];

  i[k]=s;

x++;

  }while(x!

=0);

从小到大排列为:

%ld<

i[k]);

%ld"

i[a]);

C++

  #include<

iostream>

  #defineLEN9

  usingnamespacestd;

  intmain()

  intnArray[LEN];

  for(inti=0;

i<

LEN;

i++)

  nArray[i]=LEN-i;

//赋初值

  cout<

<

原始数据为:

endl;

  for(intj=0;

j<

j++)

nArray[j]<

"

  for(intm=LEN-1;

m>

m--)

  inttemp;

  for(intn=0;

n<

m;

n++)

  if(nArray[n]>

nArray[n+1])

  temp=nArray[n];

  nArray[n]=nArray[n+1];

  nArray[n+1]=temp;

排序结果:

  for(i=0;

nArray[i]<

  return0;

PHP

  代码1:

  <

?

php

  //冒泡排序(一维数组)

  functionbubble_sort($array)

  $count=count($array);

  if($count<

=0)returnfalse;

  for($i=0;

$i<

$count;

$i++)

  for($j=$count-1;

$j>

$i;

$j--)

  if($array[$j]<

$array[$j-1])

  $tmp=$array[$j];

  $array[$j]=$array[$j-1];

  $array[$j-1]=$tmp;

  return$array;

  //使用实例

  $_array=array('

5'

'

8'

6'

9'

3'

2'

4'

  $_array=bubble_sort($_array);

  print($_array);

  >

  代码2:

  //冒泡排序

  functionmaopaosort($arr)

  for($i=0;

$i<

count($arr)-1;

$i++){

  for($j=0;

$j<

count($arr)-1-$i;

$j++){

  if($arr[$j]>

$arr[$j+1])

  //交换赋值,不使用中间变量

  $arr[$j]=$arr[$j+1]+$arr[$j];

  $arr[$j+1]=$arr[$j]-$arr[$j+1];

  $arr[$j]=$arr[$j]-$arr[$j+1];

  return$arr;

  }//endfunc

  //实例

  $arr=array(7,3,6,1,5,2,11,4,44,33,22,88,44);

  print_r(maopaosort($arr));

  //结果输出Array([0]=>

1[1]=>

2[2]=>

3[3]=>

4[4]=>

5[5]=>

6[6]=>

7[7]=>

11[8]=>

22[9]=>

33[10]=>

44[11]=>

44[12]=>

88)

Ruby

  defbubble(arr)

  (arr.length-1).downto

(1)do|j|

  a1=arr.dup

  j.timesdo|i|

  ifarr>

arr[i+1]

  arr,arr[i+1]=arr[i+1],arr

  breakifa1==arr

  arr

Java

  publicclassBubblesort{

  staticvoidbubblesort(int[]a){

  for(inti=0;

a.length;

i++){

  for(intj=a.length-1;

j>

i;

j--){

  if(a[j]<

a[j-1]){

  temp=a[j];

  a[j]=a[j-1];

  a[j-1]=temp;

VisualBasic

  PrivateSubForm_Load()

  Dima,cAsVariant

  DimiAsInteger,jAsInteger,tempAsInteger,bSwapAsBoolean

  a=Array(17,45,12,80,50)

  Forj=0ToUBound(a)-1

  bSwap=False

  Fori=0ToUBound(a)-1

  If(a(i)>

a(i+1))Then'

若是递减,改为a(i)<

a(i+1)

  temp=a(i)

  a(i)=a(i+1)

  a(i+1)=temp

  bSwap=True

  EndIf

  Next

  IfbSwap=FalseThen

  ExitFor

  ForEachcIna

  Debug.Printc;

  EndSub

Pascal

  programbubble_sort;

  var

  a:

array[1..N]of1..MAX;

  temp,i,j:

integer;

  randomize;

  fori:

=1toNdoa:

=1+random(MAX);

  writeln('

Arraybeforesorted:

'

=1toNdowrite(a,'

'

  writeln;

=N-1downto1do

  forj:

=1toido

  ifa[j]<

a[j+1]then

  temp:

=a[j];

  a[j]:

=a[j+1];

  a[j+1]:

=temp;

Arraysorted:

Endsorted.'

  readln;

  end.

C#

  staticvoidMain(string[]args)

  int[]array={23,45,16,7,42};

  intlength=array.Length-1;

  boolisExchanged=false;

length;

  isExchanged=false;

  for(intj=length;

i;

j--)

  if(array[j]>

array[j-1])

  inttemp=array[j];

  array[j]=array[j-1];

  array[j-1]=temp;

  isExchanged=true;

  if(!

isExchanged)//一遍比较过后如果没有进行交换则退出循环

  foreach(intiinarray)

  Console.WriteLine(i);

  Console.Read();

Python

  #BubbleSortusedpython3.1orpython2.x

  defbubble(str):

  tmplist=list(str)

  count=len(tmplist)

  foriinrange(0,count-1):

  forjinrange(0,count-1):

  iftmplist[j]>

tmplist[j+1]:

  tmplist[j],tmplist[j+1]=tmplist[j+1],tmplist[j]

  returntmplist

  #useage:

  str="

zbac"

  print(bubble(str))#['

a'

b'

c'

z'

]

  number=[16,134,15,1]

  print(bubble(number))#[1,15,16,134]

JS

  function(array){

  varlength=array.length,temp;

  for(vari=0;

length-2;

i++){

  for(varj=length-1;

=1;

j--){

  if(array[j]<

array[j-1]){

  temp=array[j];

  returnarray;

ActionScript

  vararr:

Array=newArray(88,0,4,22,89,0,8,15);

  vartemp:

int=0;

  for(vari:

arr.length;

i++){

  for(varj:

arr.length-i;

j++){

  if(arr[j]>

arr[j+1]){

  temp=arr[j];

  arr[j]=arr[j+1];

  arr[j+1]=temp;

  for(vart:

t<

t++){

  trace(arr[t]);

伪代码

  BUBBLESORT(A)

  fori<

-1tolength[A]

  doforj<

-length[A]downtoi+1

  doifA[j]<

A[j-1]

  thenexchangeA[j]<

->

A[j-1]

  PL/SQL代码 

  declare

  typevarr_typeisvarray(10)ofinteger;

  varrvarr_type:

=varr_type(65,32,44,78,20,13,28,99,0,1);

  iinteger;

  jinteger;

  tinteger;

  foriinreverse1..10loop--保证最大的那个值在最终的位置上

  forjin1..i-1loop

  ifvarr(j)>

varr(j+1)then

  t:

=varr(j);

  varr(j):

=varr(j+1);

  varr(j+1):

=t;

  endif;

  endloop;

  foriin1..10loop

  dbms_output.put_line(varr(i));

REALBasic

  DimiAsInteger,jAsInteger,tempAsInteger

  Forj=0ToUBound(a)-1 

  Fori=0ToUBound(a)-1 

  If(a(j)>

a(i))Then 

  temp=a(j) 

  a(j)=a(i) 

  a(i)=temp 

  EndIf 

  Next 

  Fori=0toUBound(a)

  msgboxstr(a(i)) 

变种算法

  一个叫做鸡尾酒排序(也称双向冒泡排序)的算法,和冒泡排序的“编程复杂度”一样,但对随机序列排序性能稍高于普通冒泡排序,但是因为是双向冒泡,每次循环都双向检查,极端环境下会出现额外的比较,导致算法性能的退化,比如“4、5、7、1、2、3”这个序列就会出现退化

扩展阅读:

∙1

http:

//ruby-

∙2

//JS版本常见排序算法

∙3

[1]黄福员,聂瑞华。

冒泡排序算法的改进[J].微机发展,2003,13(11)_3.

∙4

[1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1