数组冒泡排序并记录原有位置
2015-05-09 00:07
183 查看
#include <stdio.h>
/* 常规冒泡排序 */
void BubbleSort(int a[], int n)
{
int i = 0;
int j = 0;
int tmp = 0;
for (i = 0; i < n - 1; ++i)
{
for (j = 1; j < n - i; ++j)
{
if (a[j] > a[j-1]) /* 从大到小排序,把较小的交换到后面来 */
{
tmp = a[j-1];
a[j-1] = a[j];
a[j] = tmp;
}
}
}
}
/* 冒泡排序,并记录原有位置 */
/*a[] 待排序数组;n 数组元素个数; position[] 记录a[]排序前位置 */
void BubbleSortTest(int a[], int n, int position[])
{
int i = 0;
int j = 0;
int tmp = 0;
for (i = 0; i < n - 1; ++i)
{
for (j = 1; j < n - i; ++j)
{
if (a[j] > a[j-1]) /* 从大到小排序,把较小的交换到后面来 */
{
tmp = a[j-1];
a[j-1] = a[j];
a[j] = tmp;
/* 记录位置 */
tmp = position[j-1];
position[j-1] = position[j];
position[j] = tmp;
}
}
}
}
int main(void)
{
int i = 0;
int a[5] = {11,222,33,444,5};/* 测试数组 */
int b[5];/* 记录位置 */
for (i = 0; i < 5; i++)
{
b[i] = i;
}
for (i = 0; i < 5; i++)
{
printf("a[%d] = %d\n", i, a[i]);
}
printf("Hello World!\n");
BubbleSortTest(a, 5, b);
for (i = 0; i < 5; i++)
{
printf("position = %d, a[%d] = %d\n", b[i], i, a[i]);
}
return 0;
}
相关文章推荐
- 一步一步学习java数组学习(ch5)数3退1记录最后留下来的在队列中的位置
- 1.数组--最大值 2.数组--选择排序与图解 3.数组--冒泡排序图解 4.数组--1.自带排序2.遍历功能方便 5.数组-常见操作-排序位置置换代码提取
- 一步一步学习java数组学习(ch5)数3退1记录最后留下来的在队列中的位置
- 第十四周项目一数组大折腾(5)创建一个长度为16的整形数组a并初始化前15个元素,输入一个整数b,将b插入到a[0]位置(原有的数据往后“移动”)
- 查找一个list中各个数组的元素在一个固定数组中的位置, 并把位置信息记录到一个矩阵里
- (java)整数数组中求最大连续子序列之和,并且记录开始和结束位置
- CodeForces 111B(数组模拟,记录因子位置)
- (java)整数数组中求最大连续子序列之和,并且记录开始和结束位置
- 有一个整型二维数组,假设a[3][4] = {初始化了值},求出这个二维数组中所有的最大值,以及最大值对应的下标。 数组内部原有的值不能改变位置。
- 求连续子数组的最大和,并记录其起始结束位置
- js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素
- 对数组进行冒泡排序,使用comparable接口实现
- iOS开发,一个数组,里面的元素依次的向后移动,移出的元素依次补到第一个位置
- Java数组-冒泡排序2
- 数组的查询与冒泡排序(二分查询)
- 290. Word Pattern(技巧:记录当前位置来判断两个字符串是否符合)
- 编写一个函数print,打印一个学生的成绩数组,写一个函数input,用来输入5个学生的数据的记录
- mongo数据库中一条记录中某个属性是数组情形时 数据结构的定义
- 数组冒泡排序 二维数组元素排序
- 记录学习的点滴(Js数组去重)