public int findKth(int[] arr,int k){
//要计算出第K小的奇数 需要将arr中所有的奇数进行顺序排序 然后进行去重
//arr进行排序,使用选择排序
int num = 0;//计数器 计数第几个数(取最小数)
int smallNum = 0; //保存最小数用于比较是否是相同的数
int result = 0;
int n = 0;//计数君用于计算时间复杂度
for (int i = 0; i < arr.length; i++) {
//排除掉偶数和相同的最小奇数
if(arr[i]%2==0) continue;
int minIndex = i;
for (int j = i; j < arr.length; j++) {
if(arr[j]%2==0) continue;
//查找最小的数
if (arr[j] < arr[minIndex] ){
//标记较小数的下标
minIndex = j;
}
n++;
}
//调换位置 i和j调换位置
if(i != minIndex){
arr[i] = arr[i]*arr[minIndex];
arr[minIndex] = arr[i]/arr[minIndex];
arr[i] = arr[i]/arr[minIndex];
}
//比较上次的数和这次的是否相同
if(arr[i]%2==1 && arr[i]!=smallNum && arr[i]!=0){
//记录本次数
smallNum = arr[i];
num++;
}
if(num == k){
result = smallNum;
break;
}
}
if(k>num){
return 0;
}
System.out.println("循环了:"+n);
return result;
}
@Test
public void aaa(){
// Integer[] arr = new Integer[]{2,3,43,23,2453,23,23,4,53,23,4,54,3,4,5};
// Integer a= Arrays.asList(arr).stream().filter(v->v%2==1).distinct().sorted().collect(Collectors.toList()).get(2);
// System.out.println(a);
int[] arr = new int[]{2,3,43,23,2453,23,23,4,53,23,4,54,3,4,5};
System.out.println(this.findKth(arr,4));
}