C语言数据结构“查找”问题一、创
/*
* File: main。 c
* Author: fzhq
*
* Created on 2012年5月17日, 上午7:08
*/
#include
#include
/**
* 折半查找法查找数据,要求数据按照降序排列
* @param inta 数组
* @param iLen 数组长度
* @param iData 查找的数据
* @return 找到返回下标,否则返回-1
*/
int search(int inta[], int iLen, int iData) {
int iLow, iHigh; //查找边界
int iTemp; //临...全部
/*
* File: main。
c
* Author: fzhq
*
* Created on 2012年5月17日, 上午7:08
*/
#include
#include
/**
* 折半查找法查找数据,要求数据按照降序排列
* @param inta 数组
* @param iLen 数组长度
* @param iData 查找的数据
* @return 找到返回下标,否则返回-1
*/
int search(int inta[], int iLen, int iData) {
int iLow, iHigh; //查找边界
int iTemp; //临时变量
int iCompCount; //比较次数
if ((iLen inta[iTemp]) {
iHigh = iTemp;
} else {
iLow = iTemp;
}
}
//循环结束没有找到
printf("\n\n比较次数:%d\n", iCompCount);
return -1;
}
/**
* 冒泡排序
* @param inta 正数数组
* @param iLen 数组中的数据数
* @param iMode 排序模式: 0 升序 1 降序
*/
void sort(int inta[], int iLen, int iMode) {
int i, j; //循环变量
int iTemp; //临时变量
int iSwap; //交换次数
if ((iLen inta[j]) {
if (iMode == 0) {
//升序排序需要交换,否则不需要
iSwap++; //计算交换次数
inta[i] = inta[j]; //交换数据
inta[j] = iTemp;
iTemp = inta[i];
}
} else {
if (iMode == 1) {
//升序排序不需要交换,否则需要
iSwap++; //计算交换次数
inta[i] = inta[j]; //交换数据
inta[j] = iTemp;
iTemp = inta[i];
}
}
}
}
printf("排序趟数:%d\n", iLen); //冒泡排序趟数不会少
printf("交换次数:%d\n", iSwap);
}
/*
*
*/
int main(int argc, char** argv) {
int i;
int iLen;
int inta[] = {
12, 13, -18, 100, 98,
-500, 800, -800, 0, -324,
123, 321, 456, 543, -123,
900, -90, -10000, 32222, 1234567
};
iLen = sizeof (inta) / sizeof (inta[0]); //动态计算数据数量
sort(inta, iLen, 1);
printf("排序结果:");
for (i = 0; i < iLen; i++) {
printf("\t%d", inta[i]);
}
printf("\n\n查找 100 ,所在位置:%d\n", search(inta, iLen, 100));
printf("\n\n查找 -888888 ,所在位置:%d\n", search(inta, iLen, -888888));
return (EXIT_SUCCESS);
}
这些都是数据结构的基本知识,建议你好好学学,否则影响将来工作。收起