插入漏了点,补充一下,加多个选择排序 public static void sort(int[] a) {//插入 for(int i = 1; i < a.length;i++) { int tmp = a[i]; for(int j = i;j>0;j--) { if(tmp<a[j-1]) { a[j] = a[j-1]; a[j-1] = tmp; } else { break; } } } }
public static void sort2(int[] a) {//选择 for(int i = 0; i < a.length;i++) { int t = i; for(int j = i+1;j<a.length;j++) { if(a[t]>a[j]) { t = j; } } if(t!=i) { int tmp = a[i]; a[i] = a[t]; a[t] = tmp; } } }
public class Test { public static void main(String[] args) { int nums[] = {6,9,2,5,4,1,0}; int i,min = Integer.MAX_VALUE; for(i = 0; i < nums.length; i ++ ) { if(min > nums[i]) { min = nums[i]; } 定义一个Min,先从所有元素中选出最小的数,赋值给Min,然后从剩下的元素中取数和Min比较,接下去就这样依次排序,for循环要怎么实现?
public class Test { public static void main(String[] args) { int nums[] = {6,9,2,5,4,1,0};//需要查找的整数数组nums int min; for(i = 0; i < nums.length; i ++ ) { min=i; for(j=i+1;j<nums.length;j++){if(nums[min] > nums[j]) { min = j;//找到数组中最小的那个数字的下标 } } if(min!=i)//如果下标不等于i,则需要交换位置,这样就将最小的数字放在最前面了 { int tmp=nums[i]; nums[i]=num[min]; nums[min]=tmp; }}
public class Test { public static void main(String[] args) { int nums[] = {6,9,2,5,4,1,0};//需要查找的整数数组nums int min; for(i = 0; i < nums.length; i ++ ) { min=i; for(j=i+1;j<nums.length;j++){ if(nums[min] > nums[j]) { min = j;//找到数组中最小的那个数字的下标 } } if(min!=i)//如果下标不等于i,则需要交换位置,这样就将最小的数字放在最前面了 { int tmp=nums[i]; nums[i]=num[min]; nums[min]=tmp; } }
public class T { public static void main(String[] args) { int[] nums = { 9, 13, 5, 7, 24, 28, 20, 41 }; int min = Integer.MIN_VALUE;
for (int x = 0; x < nums.length; x++) { int mv = Integer.MAX_VALUE; for (int i = 0; i < nums.length; i++) { //System.out.println("Min: " + min + ", Mv: " + mv + ", Nums[" + i + "]: " + nums[i]);
if (nums[i] <= min) continue; if (mv > nums[i]) mv = nums[i];
System.out.println("Min: " + min + ", Mv: " + mv + ", Nums[" + i + "]: " + nums[i]);
//System.out.println("\r\n\r\n"); } min = mv; //System.out.println(mv); } } }这是我后面写的
int[] nums=new int[]{99,1,22,13,5,7,8,9,11,16};
for(int idx=0,len=nums.length,pos,min;idx<len;idx++){
pos=idx;
min=nums[pos];
for(int i=idx+1;i<len;i++){
if(nums[i]<min){
pos=i;
min=nums[pos];
}
}
nums[pos]=nums[idx];
nums[idx]=min;
System.out.println(min);
}
int temp=a[i];
int begin=i;
for (int j = i+1; j < a.length; j++) {
if(temp>a[j]){
temp=a[j];
begin=j;
}
}
return begin;
}
public void find(int[]a){//排序的方法
int temp;
for (int i = 0; i < a.length; i++) {
int j=min(a, i);
if(i!=j){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(int i = 1; i < a.length;i++) {
int tmp = a[i];
for(int j = i;j>0;j--) {
if(tmp<a[j-1]) {
a[j] = a[j-1];
a[j-1] = tmp;
}
}
}
}
如果有办法用Map,
就是M+N了。
给个思路,我没去想哈
for(int i = 1; i < a.length;i++) {
int tmp = a[i];
for(int j = i;j>0;j--) {
if(tmp<a[j-1]) {
a[j] = a[j-1];
a[j-1] = tmp;
}
else {
break;
}
}
}
}
public static void sort2(int[] a) {//选择
for(int i = 0; i < a.length;i++) {
int t = i;
for(int j = i+1;j<a.length;j++) {
if(a[t]>a[j]) {
t = j;
}
}
if(t!=i) {
int tmp = a[i];
a[i] = a[t];
a[t] = tmp;
}
}
}
{
public static void main(String[] args)
{
int nums[] = {6,9,2,5,4,1,0};
int i,min = Integer.MAX_VALUE;
for(i = 0; i < nums.length; i ++ )
{
if(min > nums[i])
{
min = nums[i];
} 定义一个Min,先从所有元素中选出最小的数,赋值给Min,然后从剩下的元素中取数和Min比较,接下去就这样依次排序,for循环要怎么实现?
{
public static void main(String[] args)
{
int nums[] = {6,9,2,5,4,1,0};//需要查找的整数数组nums
int min;
for(i = 0; i < nums.length; i ++ )
{
min=i;
for(j=i+1;j<nums.length;j++){if(nums[min] > nums[j])
{
min = j;//找到数组中最小的那个数字的下标
}
}
if(min!=i)//如果下标不等于i,则需要交换位置,这样就将最小的数字放在最前面了
{
int tmp=nums[i];
nums[i]=num[min];
nums[min]=tmp;
}}
{
public static void main(String[] args)
{
int nums[] = {6,9,2,5,4,1,0};//需要查找的整数数组nums
int min;
for(i = 0; i < nums.length; i ++ )
{
min=i;
for(j=i+1;j<nums.length;j++){
if(nums[min] > nums[j])
{
min = j;//找到数组中最小的那个数字的下标
}
}
if(min!=i)//如果下标不等于i,则需要交换位置,这样就将最小的数字放在最前面了
{
int tmp=nums[i];
nums[i]=num[min];
nums[min]=tmp;
}
}
{
public static void main(String[] args)
{
int[] nums = { 9, 13, 5, 7, 24, 28, 20, 41 };
int min = Integer.MIN_VALUE;
for (int x = 0; x < nums.length; x++)
{
int mv = Integer.MAX_VALUE;
for (int i = 0; i < nums.length; i++)
{
//System.out.println("Min: " + min + ", Mv: " + mv + ", Nums[" + i + "]: " + nums[i]);
if (nums[i] <= min) continue;
if (mv > nums[i]) mv = nums[i];
System.out.println("Min: " + min + ", Mv: " + mv + ", Nums[" + i + "]: " + nums[i]);
//System.out.println("\r\n\r\n");
}
min = mv;
//System.out.println(mv);
}
}
}这是我后面写的