编程基础——排序(冒泡)
1.如何理解
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。现在有一个数组,编写一段代码使数组中数据按照降序排序。
现假设数组为arrary=[1,2,3,5,4],则排序过程如下图:
黑色部分就像气泡一样上升。
2. 排序
冒泡排序是一趟的过程就是两两比较,并按规则交换数据。规则(大的放后面或小的放后面)。如下,因为是降序,所以是小的放后面
第一趟排序有五个数据(Count = 5),第一次排序是第1位和第2位的数据进行比较并根据规则交换数据。
,第二次排序是第2位和第3位的数据进行比较并根据规则交换数据。
,第三次排序是第3位和第4位的数据进行比较并根据规则交换数据。
,第四次排序是第4位和第5位的数据进行比较并根据规则交换数据。
所以当前趟总比较次数为当前趟需比较的数据个数-1 ,即: (Count-1)
(一趟比较的每次比较,是两两进行比较所以单趟比较次数为Count-1);
单趟执行代码如下:
1 int temp = -1; 2 for(int j = 0; j < count - 1 ; j ++) 3 { 4 if(arrary[j] > arrary[j + 1]) 5 { 6 temp = arrary[j]; 7 arrary[j] = arrary[j + 1]; 8 arrary[j + 1] = temp; 9 } 10 }
每趟比较都是两两进行比较,而下一趟比较总是比前一趟少一个数据。所以总趟数为总数据数-1
所以完整执行代码为
1 var arrary = new int[5]{1,2,3,5,4}; 2 int temp = -1; 3 int count = 0; 4 for(int i = 0; i < arrary.Length - 1; i++) 5 { 6 count = arrary.Length - i; 7 for(int j = 0; j < count - 1 ; j ++) 8 { 9 if(arrary[j] > arrary[j + 1]) 10 { 11 temp = arrary[j]; 12 arrary[j] = arrary[j + 1]; 13 arrary[j + 1] = temp; 14 } 15 } 16 }
分割线
分割线上代码为上浮冒泡
1 // 下浮冒泡(降序) 2 var arrary = new int[5]{1,2,3,5,4}; 3 int temp = -1; 4 int count = 0; 5 for(int i = 0; i < arrary.Length - 1; i++) 6 { 7 count = arrary.Length - i; 8 for(int j = count; j > 0; j --) 9 { 10 if(arrary[j] < arrary[j - 1]) 11 { 12 temp = arrary[j]; 13 arrary[j] = arrary[j - 1]; 14 arrary[j - 1] = temp; 15 } 16 } 17 }
冒泡排序的复杂度问题:参照 https://www.cnblogs.com/shen-hua/p/5422676.html

更多精彩