C語言冒泡排序並返回索引

C語言冒泡排序並返回索引

/***************************************************************
*Name            :SwapElement
*Fun             :交換兩個數據
*InputParaments  :a、b是兩個待交換的數據指針
*OutputParaments :None
****************************************************************/
void SwapElement(Element* a ,Element* b) {
	Element t;
	t = *a;
	*a = *b;
	*b = t;
}

/***************************************************************
*Name            :SwapIndex
*Fun             :交換兩個索引
*InputParaments  :a、b是兩個待交換的索引指針
*OutputParaments :None
****************************************************************/
void SwapIndex(int* a, int* b) {
	int t;
	t = *a;
	*a = *b;
	*b = t;
}

/***************************************************************
*Name            :BubbleSort
*Fun             :冒泡排序,並返回索引
*InputParaments  :data是待排序的數據;index是輸出參數,用於返回索引;
				  len是數組長度;mode是排序模式,0代表升序,1代表降序。
*OutputParaments :None
****************************************************************/
void BubbleSort(Element* data, int * index, int len, int mode) {
	//索引初始化
	for (int i = 0; i < len; i++) {
		index[i] = i;
	}
	for (int i = 0; i < len-1; i++) {
		for (int j = i + 1; j < len; j++) {
			if (mode == 0) {
				if (data[i] > data[j]) {
					SwapElement(data+i,data+j);
					SwapIndex(index+i,index+j);
				}
			}else if(mode==1){
				if (data[i] < data[j]) {
					SwapElement(data + i, data + j);
					SwapIndex(index + i, index + j);
				}
			}
		}
	}
}
發佈了34 篇原創文章 · 獲贊 47 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章