首页 冒泡排序总结

冒泡排序总结

举报
开通vip

冒泡排序总结冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的...

冒泡排序总结
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。   由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。算法: C语言   基础结构   */   void bubble_sort(int *x,int n)   {   int j,k,h,t;   for (h=n-1,h=k; h>0; h--) /*循环到没有比较范围*/   {   for (j=0,k=0; j *(x+j+1)) /*大的放在后面,小的放到前面*/   {   t = *(x+j);   *(x+j) = *(x+j+1);   *(x+j+1) = t; /*完成交换*/   k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/   }   }   }   }   程序1:   void bubble_sort(int array[],int n)   {   int i,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   main()   {   long a,x,k,i[100],s;   char ch;   for(a=0;;a++)   {   printf("输入一个数,输完一个数按回车,最后一个数末尾要加n:");   scanf("%ld%c",&i[a],&ch);   if(a==99)   {   printf("注意!输入的数超过100个");   break;   }   else if(ch=='n')   break;   }   do{   x=0;   for(k=0;ki[k+1])   {   s=i[k+1];i[k+1]=i[k];   i[k]=s;x++;   }   }   }while(x!=0);   printf("从小到大排列为:");   for(k=0;k   #define LEN 9   using namespace std;   int main()   {   int nArray[LEN];   for(int i=0;i0;m--)   {   int temp;   for(int n=0;nnArray[n+1])   {   temp=nArray[n];   nArray[n]=nArray[n+1];   nArray[n+1]=temp;   }   }   }   cout<<"排序结果:"< i ; j--) {   if (a[j] < a[j - 1]) {   temp = a[j];   a[j] = a[j - 1];   a[j - 1] = temp;   }   }   }   }   }   } C#   static void Main(string[] args)   {   int[] array = { 23,45,16,7,42 };   int length = array.Length - 1;   bool isExchanged = false;   for (int i = 0; i < length; i++)   {   isExchanged = false;   for (int j = length; j > i; j--)   {   if (array[j] > array[j - 1])   {   int temp = array[j];   array[j] = array[j - 1];   array[j - 1] = temp;   isExchanged = true;   }   }   if (!isExchanged)//一遍比较过后如果没有进行交换则退出循环   break;   }   foreach (int i in array)   {   Console.WriteLine(i);   }   Console.Read();   }  PL/SQL代码    declare   type varr_type is varray(10) of integer;   varr varr_type:=varr_type(65,32,44,78,20,13,28,99,0,1);   i integer;   j integer;   t integer;   begin   for i in reverse 1..10 loop --保证最大的那个值在最终的位置上   for j in 1..i-1 loop   if varr(j)>varr(j+1) then   t:=varr(j);   varr(j):=varr(j+1);   varr(j+1):=t;   end if;   end loop;   end loop;   for i in 1..10 loop   dbms_output.put_line(varr(i));   end loop;   end; String[] array = { "1 ", "22.7 ", "13.5 ", "35 ", "78 ", "95 "}; List list = new ArrayList(); for (int i = 0, arrayLength = array.length; i < arrayLength; i++) list.add(array[i]); Collections.sort(list);//升序 Collections.sort(list, Collections.reverseOrder());//降序 for (int i = 0, size = list.size(); i < size; i++) System.out.println(list.get(i)); 冒泡排序:对数组进行排序: void sort(int[] array)throws Exception{ if(array==null||array.length() <=1) return; for(int i=0,k=array.length();i array[i+1]){ int t=array[i]; array[i]=array[i+1]; array[j+1]=t; k=j; } } } 这个冒泡排序算法效率高些。
本文档为【冒泡排序总结】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_615800
暂无简介~
格式:doc
大小:44KB
软件:Word
页数:6
分类:互联网
上传时间:2012-08-20
浏览量:182