关于冒泡排序
void swap(int *a, int *b){ int temp; temp = *a; *a = *b; *b = temp;}void bubble(int *array, int num){ int i, j; for(i = 0; i < num -1; i++) { for(j = i+1; j < num ; j++) { if(*(array+i) > *(array+j)) { swap(array+i, array+j); } } }}
/***功能 :冒泡排序法排序,赋值操作符,默认构造函数**限制 :排序元素实现>操作符**实现方法 :**参数 : :elements :要排序的元素数组 :ele_num :数组中元素的个数**返回 : :排序后的数组*/template<typename T> T* Sort_Bubble(T* elements, int ele_num){ //ASSERT(elements != NULL && ele_num > 0); int sec_index = ele_num; T e_Tmp; bool unorder_exist; for(int i = 0; i < ele_num - 1; i++) { unorder_exist = false; for(int j = 0; j < sec_index - 1; j++) { if(*(elements + j) > *(elements + j + 1)) { e_Tmp = *(elements + j); *(elements + j) = *(elements + j + 1); *(elements + j + 1) = e_Tmp; unorder_exist = true; } } if(!unorder_exist) { break; } sec_index--; } return elements;}
[解决办法]
是的 哦
[解决办法]
一般的冒泡法
[解决办法]
冒泡法
[解决办法]
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void bubble(int *array, int num)
{
int i, j;
for(i = 0; i < num -1; i++)
{
for(j = 0; j < num - i - 1 ; j++)
{
if(*(array+j) > *(array+j+1)) //冒泡是相邻数据两两比较,最后将最大值放到最后;
{
swap(array+j, array+j+1);
}
}
}
}
修改了一下你的代码,作为一个参考吧!
[解决办法]
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void bubble(int *array, int num)
{
int i, j;
for(i = 0; i < num -1; i++)
{
for(j = i+1; j < num-1-i ; j++)
{
if(*(array+i) > *(array+j))
{
swap(array+i, array+j);
}
}
}
}
[解决办法]
冒泡排序的精髓不是在于flag的使用吗?
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void bubble(int *array, int num)
{
int i, j;
int flag=0;
for(i = 0; i < num -1; i++)
{
flag=0;
for(j = i+1; j < num-1-i ; j++)
{
if(*(array+i) > *(array+j))
{
swap(array+i, array+j);
flag=1;
}
}
if(!flag)
break;
}
}
[解决办法]
int[] arrSum = { 132, 4, 66, 5, 362, 9, 25, 28, 3, 62, 198, 95, 2, 125, 133, 33, 250, 20, 1 };
//冒泡排序法
protected int[] pAdd(int[] arrSum)
{
int iSum = 0;
bool boolYN = true;
while (boolYN)
{
boolYN = false;
for (int i = 0; i < arrSum.Length; i++)
{
if (i != arrSum.Length - 1 && arrSum[i] > arrSum[i + 1])
{
iSum = arrSum[i];
arrSum[i] = arrSum[i + 1];
arrSum[i + 1] = iSum;
boolYN = true;
}
}
}
return arrSum;
}
[解决办法]
楼主这个是简单选择排序不是冒泡排序
[解决办法]