c++-用冒泡排序法对10个数排序,怎么错了啊?

问题描述

用冒泡排序法对10个数排序,怎么错了啊?
#include
using namespace std;
int main()
{
int a[10]ij t;
cout << ""input 10 numbers:"" << endl;
for (i = 0; i < 10; i++)
cin >> a[i];
cout << endl;
for (j = 0; j < 9;j++)
for (i = 0; i < 10-j;i++)
if( a[i] > a[i + 1]) {
t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;
}
cout <<""the sorted numbers :"" << endl;
for (i = 0; i < 10; i++)
cout << a[i] << "" "";
cout << endl;
return 0;
}

解决方案

你的第二个for这里for (i = 0; i < 10-j;i++)
判断条件应该改为i < 9 - i
不然你i=0的时候下面的if会出现a[9]和a[10]比较,显然报错了

解决方案二:
for (j = 0; j < 9;j++)
for (i = j; i < 10-j;i++)
if( a[j] > a[i+ 1]) {
t = a[j]; a[i] = a[i + 1]; a[i+ 1] = t;
}
从小到大的排序

解决方案三:
程序没错啊。
input 10 numbers:
3 1 1 0 10 9 6 2 3 55

the sorted numbers :
0 1 1 2 3 3 6 9 10 55
Press any key to continue

解决方案四:
#inclucde

时间: 2024-08-31 06:16:19

c++-用冒泡排序法对10个数排序,怎么错了啊?的相关文章

排序算法-关于冒泡排序法的疑惑

问题描述 关于冒泡排序法的疑惑 冒泡排序法的代码 int n=0; int temp = 0; for (int i = a.length - 1; i > 0; --i) { for (int j = 0; j < i; ++j) { if (a[j + 1] < a[j]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; n++; } } } 由于我是菜鸟,我写的是这样的 int n = 0; int temp = 0; for (i

利用C++的基本算法实现十个数排序_C 语言

冒泡排序法原理:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 冒泡排序算法的运作如下:1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.针对所有的元素重复以上的步骤,除了最后一个. 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 示例代码:

JavaScript中的冒泡排序法_javascript技巧

利用sort()冒泡排序: var arr = [5,39,8,1,2,13,55]; arr = arr.sort(function(a,b){return a-b}); console.log(arr);//1,2,5,8,13,39,55 不声明第三个变量冒泡排序: 第一层遍历数组的个数(要遍历多少次),第二次遍历(共要循环几次) a = 10; //第一个元素 b = 5; //下一个元素 if(a>b){ a = a+b; // a(15) = 10 +5; b = a-b; // b

php中实现冒泡排序、快速排序、选择排序和插入排序等经典算法

// 冒泡排序 function BubbleSort($arr) { // 获得数组总长度 $num = count($arr); // 正向遍历数组 for ($i = 1; $i < $num; $i++) { // 反向遍历 for ($j = $num - 1; $j >= $i ; $j--) { // 相邻两个数比较 if ($arr[$j] < $arr[$j-1]) { // 暂存较小的数 $iTemp = $arr[$j-1]; // 把较大的放前面 $arr[$j-

c语言-C语言中的冒泡排序法(详细解说)

问题描述 C语言中的冒泡排序法(详细解说) 对输入的20个数进行排序,储存在数组中,在输入一个数,在不改变原序的情况下,输出这21个数.(麻烦各位大神解释清楚点,我还是新手!) 解决方案 C语言--冒泡排序法(详细注释) 解决方案二: 示例: #include"stdio.h" main() { int a[5],*p,i,t,j; for(i=0;i scanf("%d",&a[i]); printf(" "); for(i=0;i {

java-JAVA实现:一个数组里有1000个数,依次输出最大的10个数

问题描述 JAVA实现:一个数组里有1000个数,依次输出最大的10个数 刚接触JAVA,求各位前辈解答............... 解决方案 Random random = new Random(); List<Integer> item = new ArrayList<Integer>(); for (int i = 0; i < 1000; i++) { //System.out.println(Math.abs(random.nextInt()) % 1000);

C语言冒泡排序法心得_C 语言

记得以前在大学里学习c语言的时候,刚开始是很吃力的. 入门级别的算法中有个叫冒泡排序法,也有称为气泡排序法.那时候刚接触它就对它的名字特别感兴趣,因为觉得很有意思.好了,废话不多说了,我们先一起简单回忆下这个冒泡排序法.  一.打印行和列一般是这样的一个简单代码,输出4行4列*: for(int i = 1,i < 5,i++){ for(int j = 1,j < 5,j++){ printf("*"); } printf("n\"); }  二.打印

算法之【冒泡排序法】

冒泡排序法是一种较简单的数值大小排序的算法.主要逻辑是: 对于原始的一组线性数据,从头到尾依次两两比较,如果前者大于后者(或者相反)则交换两个数的位置.这样一遍做下来,数组最末端即是所有数中最大的(或最小的),接下来将除了最后一个数以外剩下的数据再进行一遍刚才的算法.以此类推,每一遍的数据都越来越少,直到最后只剩一个时结束,此时排序完成. Bubble Sort is a simple algorithm ofsequencing a pile of data, especially numer

PHP查找数值数组中不重复最大和最小的10个数的方法

  这篇文章主要介绍了PHP查找数值数组中不重复最大和最小的10个数的方法,涉及php中array_unique与array_slice方法的使用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了PHP查找数值数组中不重复最大和最小的10个数的方法.分享给大家供大家参考.具体如下: 1. php代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 //随机生成1万个元素的数组 for($i=0;$i<10000;$i++){ $ary[]=rand(1,10000