标签:11 12 temp int 冒泡排序 ++ tag 并且 随机数
1.产生100个不同的随机数(0~100):
方法一:
1 // 利用空间换时间效率 ,数组直接初始化全部为0 2 int[] a = new int[n]; 3 int[] b = new int[n+1]; 4 for(int i = 0;i < n;) 5 { 6 int x = (int) (Math.random()*101); 7 //当b数组当前下标值为0时就把下标赋给a数组,并且把b值为1,进行下一个赋值 8 //当b的数组对应数为1时说明此下表已经用过,返回去重新产生随机数,这时候i没有自加 9 if(0 == b[x]) 10 { 11 a[i] = x; 12 b[x] = 1; 13 i++; 14 } 15 }
方法二:
1 int[] a = new int[n]; 2 for(int i = 0;i < n;) 3 { 4 int x = (int) (Math.random()*101); 5 int j = 0; 6 //此for用于和前面已经产生的数进行比较。如果相等就跳出循环在这个位置重新产生随机数。 7 for(;j < i;j++) 8 { 9 if(x == a[j]) 10 11 { 12 break; 13 } 14 } 15 //当此条件下说明说明没有重复数,进行赋值,并且向后移一位。 16 if(j >= i) 17 { 18 a[i] = x; 19 i++; 20 } 21 }
1.冒泡排序:
方法一:
1 int temp = 0; 2 // 循环n-1次 3 for(int i = 0;i < n-1;i++) 4 { 5 //每一次会确定一个数,所以比较的数会逐渐减少 6 for(int j = 0;j < n-1-i;j++) 7 { 8 if(a[j] > a[j+1]) 9 { 10 temp = a[j]; 11 a[j] = a[j+1]; 12 a[j+1] = temp; 13 } 14 } 15
}
方法二:
1 //利用两次循环:每一次下去找出最大数,然后从下往上时找到最小的数。 2 //外for控制循环的此数 。tag用于标识。 3 for(int i = 0;i < n-1;i++) 4 { 5 tag = true; 6 //DOWN 7 for(int j = i;j < n-1-i;j++)//注意j的范围 8 { 9 if(a[j] > a[j+1]) 10 { 11 temp = a[j]; 12 a[j] = a[j+1]; 13 a[j+1] = temp; 14 tag = false; 15 } 16 } 17 if(tag) break; //此处tag未变,说明已经有序,无需再排。 18 tag = true; //否则把tag改为true 19 //UP 20 for(int j = n-2-i;j > i;j--) 21 { 22 if(a[j] < a[j-1]) 23 {25 temp = a[j]; 26 a[j] = a[j-1]; 27 a[j-1] = temp;
tag = false; 28 } 29 } 30 if(tag) break; 31 }
标签:11,12,temp,int,冒泡排序,++,tag,并且,随机数
来源: https://www.cnblogs.com/YangK123/p/12348573.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。