因我皈依于观音殿,又屡蒙观音菩萨感应道交排忧解难,为感恩纪念观世音菩萨的慈悲(慈能与乐,悲能拔苦),又观世音菩萨别一名号为海潮音,海潮与我的算法特点很形象.
for (int i = 0; i < arr.Length - 1; i++)
{
if (arr[i] > arr[i + 1])
{
temp = arr[i + 1];
for (int j = i; j >= 0; j--)
{
if (arr[j] > arr[j + 1])
{
arr[j + 1] = arr[j];
arr[j] = temp;
}
else break;
}
}
}
Console.WriteLine("\n海潮排序数组:");
foreach (int item in arr)
Console.Write(item + " ");
c++模板写法
template <class 类模板形参>
void 海潮排序(类模板形参 数组[], int 量)
{
类模板形参 临时 = 0;
for (int i = 0; i < 量 - 1; i++)
{
if (数组[i] > 数组[i + 1])
{
temp = 数组[i + 1];
for (int j = i; j >= 0; j--)
{
if (数组[j] > 数组[j + 1])
{
数组[j + 1] = 数组[j];
数组[j] = 临时;
}
else break;
排序次++;
}
}
排序次++;
}
};
void 显示数组(模参 数组[], 模参 参)
{
for (int 序 = 0; 序 < 参; 序++)std::cout << 数组[序] << " ";
std::cout << 排序次 << std::endl;
}
double bbb[] = { 9.1, 6.2, 3.3, 2.4, 5.5, 8.6, 7.7, 4.8, 1.9 };
int 量 = sizeof(bbb) / sizeof(bbb[0]); 排序次 = 0;
海潮排序(bbb, 量); 显示数组(bbb, 量);
char ccc[] = {'p','i','y','f','d','s','k','h','x'};
int 量 = sizeof(ccc) / sizeof(ccc[0]); 排序次 = 0;
海潮排序(ccc, 量); 显示数组(ccc, 量);
一个循环内完成排序:
static void 以进为退(int[] 数据)
{
int 总量 = 数据.Length, 交换 = 0, 数量 = 0, 跟 = 0;
do
{
if (数据[数量] < 数据[跟])
{
交换 = 数据[数量]; 数据[数量] = 数据[跟]; 数据[跟] = 交换;
while (跟 > 0 && 数据[跟] < 数据[跟 - 1])
{
交换 = 数据[跟]; 数据[跟] = 数据[跟 - 1]; 数据[跟-- - 1] = 交换;
}
}
跟 = 数量;
} while (总量 > ++数量);
}
/*c语言 选择排序法哪写的不对*/
int a[10] = { 4, 2, 7, 8, 9, 10, 11, 24, 5, 6 };
int i, j, t;
for (i = 0; i < 9; i++)
{
for (j = i + 1; j<10; j++)
{
if (a[i]>a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
i--;/*这种排序法特点:把交换过的值拿来比较后面是否还有比它小的值直到没有才进入下一个元素*/
break;
}
}
}
for (i = 0; i <= 9; i++)
printf_s("%2d\n", a[i]);
不知道为什么想起这个排序就觉得好有趣想发笑,哈哈......当用{10,9,8,7,6,5,4,3,2,1}作测试把断点下在break;看交换时,哈哈......太可爱了,哈哈......
用VB循环写法替换上面的循环写法:省得有人还要问不同语言的
For Each i As Integer In aa
Next
For 序 As Integer = 1 To 10 Step 1
Next
输入10个数排序求平均值
int shuzu[10], pingjun(0), temp(0);
std::cin >> shuzu[0] >> shuzu[1] >> shuzu[2] >> shuzu[3] >> shuzu[4] >> shuzu[5] >> shuzu[6] >> shuzu[7] >> shuzu[8] >> shuzu[9];
for (int i = 0; i < 9; i++)
{
if (shuzu[i] > shuzu[i + 1])
{
temp = shuzu[i + 1];
for (int j = i; j >= 0; j--)
{
if (shuzu[j] > shuzu[j + 1])
{
shuzu[j + 1] = shuzu[j];
shuzu[j] = temp;
}
else break;
}
}
pingjun += shuzu[i];
}
for (int i = 0; i < 10; i++)std::cout << shuzu[i] <<" ";
std::cout << endl;
for (int i = 9; i >= 0; i--)std::cout << shuzu[i] << " ";
std::cout << endl << pingjun / 10;