您的位置:首页 > 其它

数组冒泡排序并记录原有位置

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;

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐